【题目描述】
今天的电脑课,老师给大家普及了一些计算机知识。
硬盘制造商有不同的容量衡量标准。
通常制造商认为1“kilo”等于1000,但操作系统会认为是1024。
因此,当你购买了一个100MB的硬盘,电脑却只显示大约有95MB,这缺失了大约5MB。
对于硬盘的大小,有多种单位描述。
它们分别是byte, kilobyte, megabyte, gigabyte, terabyte, petabyte, exabyte, zetabyte 和yottabyte。
每一个都相当于前一个的 1“kilo”倍。 例如,1 gigabyte 就是 1 “kilo” megabytes.
给定制造商所代表的硬盘的大小,你决定试着计算“缺失部分”的百分比。
【输入格式】
第一行给定T,表示有T组数据。
每组数据形如:数字[单位] ,其中"数字"在范围 [1, 1000]内 ,
同时"单位"为以下单位之一:“B”, “KB”, “MB”, “GB”, “TB”, “PB”, “EB”, “ZB”, “YB” ,
单位大小是递增的。
【输出格式】
对于第x组数据,输出:“Case #x: y”, 其中y是缺失部分的百分比,具体输出格式可参考样例。
注意空格!注意空格!注意空格!
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
int n;
cin>>n;
int m = n;
while(n--)
{
int a;
cin>>a;
string h;
cin>>h;
if(strcmp(h.c_str(),"[B]")==0) printf("Case #%d: %.2lf%%\n",m-n,1.0-1.0);
if(strcmp(h.c_str(),"[KB]")==0) printf("Case #%d: %.2lf%%\n",m-n,(1-1.0/1.024)*100);
if(strcmp(h.c_str(),"[MB]")==0) printf("Case #%d: %.2lf%%\n",m-n,(1-1.0/1.024/1.024)*100);
if(strcmp(h.c_str(),"[GB]")==0) printf("Case #%d: %.2lf%%\n",m-n,(1-1.0/1.024/1.024/1.024)*100);
if(strcmp(h.c_str(),"[TB]")==0) printf("Case #%d: %.2lf%%\n",m-n,(1-1.0/1.024/1.024/1.024/1.024)*100);
if(strcmp(h.c_str(),"[PB]")==0) printf("Case #%d: %.2lf%%\n",m-n,(1-1.0/1.024/1.024/1.024/1.024/1.024)*100);
if(strcmp(h.c_str(),"[EB]")==0) printf("Case #%d: %.2lf%%\n",m-n,(1-1.0/1.024/1.024/1.024/1.024/1.024/1.024)*100);
if(strcmp(h.c_str(),"[ZB]")==0) printf("Case #%d: %.2lf%%\n",m-n,(1-1.0/1.024/1.024/1.024/1.024/1.024/1.024/1.024)*100);
if(strcmp(h.c_str(),"[YB]")==0) printf("Case #%d: %.2lf%%\n",m-n,(1-1.0/1.024/1.024/1.024/1.024/1.024/1.024/1.024/1.024)*100);
}
}