1. 程式人生 > >2018年廣東工業大學文遠知行杯新生程式設計競賽 1004 明日會吹明日的風β

2018年廣東工業大學文遠知行杯新生程式設計競賽 1004 明日會吹明日的風β

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次方 Bytes

1MB=1024KB=2的20次方 Bytes

1GB=1024MB=2的30次方 Bytes

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

 

 

 

#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath> 
using namespace std;

char a[100],b[100],c[100];

int main()
{
    int n,m,j,k,i,T;
    cin>>T;
    while (T--)
    {
        cin>>n;
        int sum=0;
        getchar();
        while (n--)
        {
            scanf("%s %s",a,b);
            if (strcmp(a,"int")==0)
            sum+=4;
            else if (strcmp(a,"bool")==0)
            sum+=1;    
            else if (strcmp(a,"long")==0)
            {
                sum+=8;
                scanf("%s",c);
            }
            
            else if (strcmp(a,"double")==0)
            sum+=8;
            else if (strcmp(a,"char")==0)
            sum+=1;
            else if (strcmp(a,"float")==0)
            sum+=4;
        }    
        int ans = ceil(sum*1.0/1024);
        printf("%d\n",ans); 
    }    
    
    return  0;
}