你的脑容量
Description
int占用4个字节,bool占用1个字节,long long占用88个字节,double占用8个字节,char占用1个字节,float占用4个字节。
这是哪个世界线的咒语吗?
计算机中各种存储容量的单位都是用字节(Byte简为B)来表示,此外还有KB(千字节)、MB(兆字节)、GB(千兆字节)和TB(太字节),他们的关系是
1KB=1024 Bytes=2^10 Byte
1MB=1024KB=2^20 Byte
1GB=1024MB=2^30 Byte
1TB=1024GB=2^40 Bytes…
请你写一个程序,求n个这六种类型的变量,求出这些变量理论上需要使用多少KB(千字节)的内存,答案向上取整。
Input
第一行一个整数T,代表有T组样例
对于每组样例第一行n标识输入有n行 (n<=100000)(n<=100000)
接下来n行如上述所示
输入保证1:每一行只有一个类型名和变量名
存在:int a;而不存在:int a,b
2:输入的基本格式为:<变量类型> <变量名>
3:n的和不超过200000
Output
输出用了多少KB(千字节)内存(向上取整)
Sample Input 1
1
1
int a
Sample Output 1
1
通过判断类型首字母来判断所占空间
#include<stdio.h>
int main()
{
int T;
scanf("%d",&T);
while(T--){
int n,l=0;
scanf("%d",&n);
getchar(); //需要吸收\n,不然\n会直接到下面进入数组a中
while(n--){
char a[100];
gets(a);
if(a[0]=='i'){
l+=4;
}
else if(a[0]=='b'){
l+=1;
}
else if(a[0]=='l'){
l+=8;
}
else if(a[0]=='d'){
l+=8;
}
else if(a[0]=='f'){
l+=4;
}
else if(a[0]=='c'){
l+=1;
}
}
if(l%1024==0){
printf("%d\n",l/1024);
}
else{
printf("%d\n",l/1024+1);
}
}
return 0;
}