很多天前和学长比赛没做出来的题,只可惜我们学的C++,C的输入输出控制真的很方便。
早上做了一下,发现了一件很蛋疼的事情:
double base=1000/1024;
printf("%f",base);
output: 0
上网看了别人的代码,发现大家都是这样写的
double base=1000;
for(int i=0;i<10;i++)
base/=2;
这样貌似就没有问题了
。。。。明白了,1000和1024都是int
所以这样也是对的
double base=(double)1000/1024;
上代码:
#include<cstdio>
#include<cmath>
char l[10]="BKMGTPEZY";
int main()
{
//freopen("jeslie.txt","r",stdin);
int N;
scanf("%d",&N);
int k=1;
double base=1000;
for(int i=0;i<10;i++)
base/=2;
//printf("%f",base);
while(k<=N)
{
int num,key;
char str[3];
scanf("%d[%s]",&num,&str);
for(key=0;key<9;key++)
{
if(l[key]==str[0])
break;
}
printf("Case #%d: %.2f%%\n",k,(1-pow(base,key))*100);
k++;
}
return 0;
}