/ Vijos / 讨论 / 问答 /

求助,急

RT
我们知道计算机的大小单位有 B, KB, MB 等,现在请你编写一个计算器进行大小单位换算。

提示,11 GB = 2^{10}2
10
MB = 2^{20}2
20
KB = 2^{30}2
30
B。

输入一个字符串,由一个 0 到 1023 之间的整数,一个单位名称(大写字母),一个等于号和问号,以及第二个单位名称。

单位只有可能是 GB,MB,KB,B 之间的一个。

输出格式
输出一个数字,精确到小数点后 6 位。

输入输出样例
输入 #1
128MB=?GB
输出 #1
0.125000
输入 #2
64MB=?KB
输出 #2
65536.000000

1 条评论

  • @ 2020-12-16 20:29:15
    #include<bits/stdc++.h>
    using namespace std;
    int main() {
        string s;
        int i = 0;
        double sum = 0;
        getline(cin, s);
        while(s[i] >= '0' && s[i] <= '9') {
            sum = sum * 10 + s[i] - '0';
            i++;
        }
        if(s[i] == 'M')
            sum *= pow(2, 20);
        else if(s[i] == 'G')
            sum *= pow(2, 30);
        else if(s[i] == 'K')
            sum *= pow(2, 10);
        if(s[s.length() - 2] == 'G')
            sum *= pow(2, -30);
        else if(s[s.length() - 2] == 'M')
            sum *= pow(2, -20);
        else if(s[s.length() - 2] == 'K')
            sum *= pow(2, -10);
        printf("%.6lf", sum);
        return 0;
    }
    
    
  • 1