斌神无所不能
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点)相比较。