斌神无所不能

斌神无所不能

Description

    如果你以为斌神只会ACM?come on,斌神是无所不能的!其实,在2012/11/11这天之后,斌神就已经是亿万富翁了,为什么呢?因为他在天猫上开了个网店大卖了一种商品——2012世界末日诺亚方舟船票!因为诺亚方舟是斌神造的,所以斌神垄断了这种商品。以前一直生意不好,没想到光棍节那天订单络绎不绝,卡爆了天猫。但是,这种情况斌神夜观天象的时候已经预测出了,所以他一边限制一次性购买数量,一边却制定了下面的策略:

1.如果订单时间为00:00:00 ~ 05:59:59,那么原价卖出

2.如果订单时间为06:00:00 ~ 17:59:59,那么按原价10倍卖出

3.如果订单时间为18:00:00 ~ 23:59:59,那么按原价100倍卖出

斌神作为老板雇佣了你,让你计算总收入。其实斌神完全可以在数秒内口算出来,只是他女朋友叫他回家吃饭。

 

Input

    输入包含多个样例。对于每个样例,第一行包含两个整数n, p (0<n<=100,000,  100,000<=p<=100,000,000)表示下单人数和船票单价。接下来n行,每行都是这样的形式:

h:m:s k

h:m:s”表示h时m分s秒下单,k表示订票数量(0 < k <= 10).

 

Output

    输出一行,单独一个数表示收入

 

Sample Input

3 100000

0:0:0 1

6:0:0 1

18:0:0 1

 

Sample Output

11100000

 

                                                                                                                                                    题目来源:中南大学2012年11月新手赛

 

AC代码

#include <cstdio>
int main()
{
    freopen("data.in","r",stdin);
    freopen("data.out","w",stdout);
    int n,p,h,m,s,k;
    char ch;
    while (scanf("%d%d",&n,&p)!=EOF)
    {
    __int64 sum=0;
    for (int i=1;i<=n;i++)
    {
        scanf("%d%c%d%c%d%d",&h,&ch,&m,&ch,&s,&k);
        int qq=h*10000+m*100+s;
        int rr=0;int tt=0;
        if (qq/60000>0){rr=1;}
        if (qq/180000>0){tt=1;}
        int temp=rr+tt;
        switch(temp)
        {
            case 0:sum=sum+k*p;break;
            case 1:sum=sum+k*p*10;break;
            case 2:sum=sum+k*p*100;break;
        }
    }
    printf("%I64d\n",sum);
    }
    fclose(stdin);
    fclose(stdout);
    return 0;
}

这个题目要注意输出的数据会超过10亿位,因此不能再用int类型了,而要用long long或者__int64,再判断过程中,使用switch语句,从而避免大量条件语句的出现。。。读入数据时,由于数据中间用:,所以用一个字符变量去接受,之后就不用管了。。。数据处理方面,将小时*10000,分钟*100,再将三个数据相加与60000和180000(实际上就是6点和18点)相比较。

   

posted @ 2012-11-27 17:07  KRisen  阅读(414)  评论(0编辑  收藏  举报