明日会吹明日的风β

Problem Description
In the world line 1.048596
“为了帮助笨蛋梓川利用程序来解决青春期症候群的问题,我觉得有必要你给你普及一下C语言的内存知识。
今天的双叶理央也依然在理科实验室用烧杯煮咖啡
“我已经几年没有用过这个东西,还被人可怜的说是原始人了哦。”梓川咲太看着眼前的电脑,虽然知道基本用法,但止步于上网查找资料
“还是从基本的开始说起吧。”双叶理央把C++ Prime Plus递给梓川咲太,“从这一页开始念。
“众所周知…在常用的基本变量类型有6种,对于每一种基本变量类型

  • int占用4个字节
  • bool占用1个字节
  • long long占用8个字节
  • 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…
    梓川咲太的脑容量是多少KB呢?他本人也想不懂,但肯定不是用TB来衡量的
    “好了基础知识讲解完毕,你去写一个程序,给你n个这六种类型的变量,求出这些变量理论上需要使用多少KB(千字节)的内存,记得向上取整。
    说完双叶理央就离开了理科实验室,留下对着电脑干瞪眼的梓川咲太
    因为古贺朋绘的缘故,这个场景已经经历了三四遍,但梓川咲太依旧一筹莫展,也许再经历三四百遍也无济于事吧
    真的是这样吗?眼前的电脑突然接收了一份邮件,里面是双叶理央要求梓川咲太编写的程序。

Input
第一行一个整数T,代表有T组样例
对于每组样例
第一行n标识输入有n行 (n<=100000)
接下来n行如上述所示
输入保证
1:每一行只有一个标识
2:输入的基本格式为:
<变量类型> <变量名>
3:一行只有一个类型
4:变量名的长度不超过10,且对于每组样例,输入的n个变量名均不同
例如:
存在:int a;
而不存在:int a,b;
5:n的和不超过200000。

Output
输出用了多少KB(千字节)内存(向上取整)

Sample Input
1
1
int a;

Sample Output
1

题解:赤裸裸的送温暖,注意向上取整时1024的整数倍的情况要特殊考虑。

#include <bits/stdc++.h>
#define ll long long
#define ull unsigned ling long
#define INF 0×3f3f3f3f  //0×7ffffff
#define EPS 1e-6
#define maxn 10000+10
#define PI acos(-1.0)
using namespace std;

int main()
{
    int t,n,res;
    char a[50];
    cin>>t;
    while(t--)
    {
        res=0;
        cin>>n;
        getchar();
        while(n--)
        {
            cin.getline(a,33);
            if(a[0]=='i') res+=4;
            if(a[0]=='f') res+=4;
            if(a[0]=='b') res+=1;
            if(a[0]=='c') res+=1;
            if(a[0]=='l') res+=8;
            if(a[0]=='d') res+=8;
        }
        if(res%1024==0) cout<<res/1024<<endl;
        else cout<<floor(res/1024)+1<<endl;
    }
    return 0;
}

 

发表评论,支持MarkDown语法