您当前的位置: 首页 >  数学

HeartFireY

暂无认证

  • 0浏览

    0关注

    334博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

B-小学数学

HeartFireY 发布时间:2021-02-07 17:59:17 ,浏览量:0

题目描述

Problem Description

今天的电脑课,老师给大家普及了一些计算机知识。

硬盘制造商有不同的容量衡量标准。 通常制造商认为1“kilo”等于1000,但操作系统会认为是1024。 因此,当你购买了一个100MB的硬盘,电脑却只显示大约有95MB,这缺失了大约5MB。 对于硬盘的大小,有多种单位描述。 它们分别是byte, kilobyte, megabyte, gigabyte, terabyte, petabyte, exabyte, zetabyte 和yottabyte。 每一个都相当于前一个的 1“kilo”倍。 例如,1 gigabyte 就是 1 “kilo” megabytes.

给定制造商所代表的硬盘的大小,你决定试着计算“缺失部分”的百分比。

Input

第一行给定T,表示有T组数据。

每组数据形如:数字[单位] ,其中"数字"在范围 [1, 1000]内 , 同时"单位"为以下单位之一:“B”, “KB”, “MB”, “GB”, “TB”, “PB”, “EB”, “ZB”, “YB” , 单位大小是递增的。

Output

对于第x组数据,输出:“Case #x: y”, 其中y是缺失部分的百分比,具体输出格式可参考样例。

Sample Input

2
100[MB]
1[B]

Sample Output

Case #1: 4.63%
Case #2: 0.00%

Hint

第一组数据中: 制造商认为:100 MB=1e5 KB=1e8 B, 操作系统认为:100 MB=100* 1024 KB=10010241024 B, 因此缺失部分=1-(1e8)/(10010241024)=4.63%

题目分析

没啥好分析的,直接疯狂复制粘贴修改代码片段即可。

当然,封装成函数也可以。反正一坨if少不了

AC Code
#include 
using namespace std;

int main(){
    int T, tt = 0; cin >> T;
    while (T--){
        int x;
        char c[10];
        cin >> x >> c;
        int n = strlen(c);
        double num = 1000.0 / 1024;
        if (n == 3){
            printf("Case #%d: 0.00%%\n", ++tt);
            continue;
        }
        if (c[1] == 'K'){
            printf("Case #%d: %.2lf%%\n", ++tt, 100 * (1 - num));
            continue;
        }
        if (c[1] == 'M'){
            printf("Case #%d: %.2lf%%\n", ++tt, 100 * (1 - num * num));
            continue;
        }
        if (c[1] == 'G'){
            printf("Case #%d: %.2lf%%\n", ++tt, 100 * (1 - num * num * num));
            continue;
        }
        if (c[1] == 'T'){
            printf("Case #%d: %.2lf%%\n", ++tt, 100 * (1 - num * num * num * num));
            continue;
        }
        if (c[1] == 'P'){
            printf("Case #%d: %.2lf%%\n", ++tt, 100 * (1 - num * num * num * num * num));
            continue;
        }
        if (c[1] == 'E'){
            printf("Case #%d: %.2lf%%\n", ++tt, 100 * (1 - num * num * num * num * num * num));
            continue;
        }
        if (c[1] == 'Z'){
            printf("Case #%d: %.2lf%%\n", ++tt, 100 * (1 - num * num * num * num * num * num * num));
            continue;
        }
        if (c[1] == 'Y'){
            printf("Case #%d: %.2lf%%\n", ++tt, 100 * (1 - num * num * num * num * num * num * num * num));
            continue;
        }
    }
    return 0;
}
关注
打赏
1662600635
查看更多评论
立即登录/注册

微信扫码登录

0.0411s