HDU 2186 悼念512汶川大地震遇难同胞——一定要记住我爱你(取余技巧)

悼念512汶川大地震遇难同胞——一定要记住我爱你

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 9582    Accepted Submission(s): 5826


Problem Description
当抢救人员发现她的时候,她已经死了,是被垮塌下来的房子压死的,透过那一堆废墟的的间隙可以看到她死亡的姿势,双膝跪着,整个上身向前匍匐着,双手扶着地支撑着身体,有些象古人行跪拜礼,只是身体被压的变形了。救援人员从废墟的空隙伸手进去确认了她已经死亡,又在冲着废墟喊了几声,用撬棍在在砖头上敲了几下,里面没有任何回应。
当人群走到下一个建筑物的时候,救援队长忽然往回跑,边跑变喊“快过来”。他又来到她的尸体前,费力的把手伸进女人的身子底下摸索,他摸了几下高声的喊“有人,有个孩子 ,还活着”。
经过一番努力,人们小心的把挡着她的废墟清理开,在她的身体下面躺着她的孩子,包在一个红色带黄花的小被子里,大概有3、4个月大,因为母亲身体庇护着,他毫发未伤,抱出来的时候,他还安静的睡着,他熟睡的脸让所有在场的人感到很温暖。

随行的医生过来解开被子准备做些检查,发现有一部手机塞在被子里,医生下意识的看了下手机屏幕,发现屏幕上是一条已经写好的短信“亲爱的宝贝,如果你能活着,一定要记住我爱你”,看惯了生离死别的医生却在这一刻落泪了,手机传递着,每个看到短信的人都落泪了…
HDU 2186 悼念512汶川大地震遇难同胞——一定要记住我爱你(取余技巧)_第1张图片
前面讲述的是一个真实的故事,虽然只有短短十几个字,但我们每个人都可以感受到那份母爱的伟大。万幸的是,宝宝得救了,这也是最能鼓舞救援人员的事情。

灾后的救援需要很多的人员,现在又刚刚到达一批志愿者,他们一共有n(10<=n<=1000)人,根据指挥部的指示,他们将被分为抢险、医疗以及通信等3个小分队,并且规定,抢险小分队需要占总人数的一半(如果有小数的话,则舍去),医疗小分队需要占剩余人数的2/3(如果有小数的话,则舍去),剩余的则组成通信小分队。比如一共有55人,那么抢险小分队为55/2=27人,减去抢险小分队为27人剩下28人,则医疗小分队为28*2/3 = 18人,通信小分队为55-27-18=10人。

为了保证救援工作的顺利进行,指挥部决定为每个小分队指派若干当地的向导,原则是为每十个志愿者指派一个向导(如有不足10人的情况,也指派一个),现在请问:需要为这批志愿者指派多少个向导呢?
 

Input
输入数据首先包含一个正整数C,表示有C组测试用例,然后是C行数据,每行包含一个正整数n(10<=n<=1000),表示志愿者的总人数。
 

Output
对于每组测试数据,请输出需要的向导数目,每个输出占一行。
 

Sample Input
   
   
   
   
2 14 55
 

Sample Output
   
   
   
   
3 6
 

Author
lcy
 

Source
2008-06-18《 ACM程序设计》期末考试——四川加油!中国加油!

原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2186

基础题,取余有个小技巧,看代码二
加9再除以10可以简单很多。


AC代码1;

#include <iostream>
using namespace std;
int main()
{
    int t,n;
    cin>>t;
    while(t--)
    {
        cin>>n;
        int sum=n,ans=0;
        int sum1=sum/2;
        ans+=sum1/10;
        if(sum1%10)
            ans++;
        sum-=sum1;

        int sum2=sum*2/3;
        ans+=sum2/10;
        if(sum2%10)
            ans++;

        sum-=sum2;
        ans+=sum/10;
        if(sum%10)
            ans++;
        cout<<ans<<endl;

    }
    return 0;
}

AC代码二:

#include<stdio.h>
int main()
{
    int c;
    scanf("%d",&c);
    while(c--)
    {
        int x,t=0;
        scanf("%d",&x);
        t+=(x/2+9)/10;

        x=x-x/2;
        t+=(x*2/3+9)/10;

        x=x-x*2/3;
        t+=(x+9)/10;

        printf("%d\n",t);
    }
    return 0;
}



你可能感兴趣的:(HDU2186)