zoukankan      html  css  js  c++  java
  • 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
    ",ans); 
        }    
        
        return  0;
    }
    
  • 相关阅读:
    zoj 3627#模拟#枚举
    Codeforces 432D Prefixes and Suffixes kmp
    hdu 4778 Gems Fight! 状压dp
    CodeForces 379D 暴力 枚举
    HDU 4022 stl multiset
    手动转一下田神的2048
    【ZOJ】3785 What day is that day? ——KMP 暴力打表找规律
    poj 3254 状压dp
    C++中运算符的优先级
    内存中的数据对齐
  • 原文地址:https://www.cnblogs.com/Romantic-Chopin/p/12451244.html
Copyright © 2011-2022 走看看