题目背景
一道极其无厘头的题目
题目描述
事情是这样的:西游记中的孙沙猪(孙杀猪)三徒弟在西天取经之后开始进入厦门大学经贸系学习经济,在1个小时的学习后,他们用暴力手段毕业了。然后,他们创办了三个公司——“花果山生态旅游山庄集团公司”“高老庄猪肉美食城有限公司”“流沙河轮渡有限公司”。虽然这三家公司出自“经卷出版社”社长唐三藏的徒弟们,但是仍然保持着0元以下的财政收入。于是,他们想到了一个无聊的方法——向别人偷!是这样的:如果猪八戒知道孙悟空要偷猪八戒的平底锅,猪八戒就不能去抢沙和尚的保时捷。现在,作为猪八戒手下首席智士(智障人士)的你,要帮助既聪明又愚蠢的猪八戒用那种不正当的手段挽救这个公司!你可以这样做:你已经知道孙悟空什么时候要来偷猪八戒的东西,而猪八戒又要在什么时间去抢沙和尚的东西,又知道猪八戒每秒钟可以偷沙和尚1台笔记本电脑,帮猪八戒算一算,自己在有限的时间内能偷到沙和尚多少台电脑,使得他有足够的时间来防御大师兄。
输入输出格式
输入格式:
第一行:时:分:秒(表示猪八戒打算去偷沙和尚笔记本电脑的时间)
第二行:时:分:秒(表示孙悟空打算去偷猪八戒平底锅的时间)
注:时间可能有前导0,也有可能没有。
第三行:猪八戒每秒可以偷沙和尚几台笔记本电脑
确保第一行的时间要比第二行的时间来得早。
输出格式:
一个整数,有可能大于long long(int64),表示猪八戒能偷沙和尚笔记本的个数
输入输出样例
00:0:000:00:1010
100
说明
数据范围:
00:00:00到23:59:59
数量<=32767
这题最难的地方在于读入2333 如果是pascal选手估计得敲几十行代码2333
刚开始看到前导0个数不定,打算读字符串再截取数字。
思考两秒钟后发现根本不用,平常用的读入优化管你有几个前导0
然而读入优化怎么解决那个冒号?
思考三秒钟后果断用scanf("%d%c%d%c%d"),顺便鄙视了一下三秒前自己的智商
还要多弄个char,挺麻烦的,于是改成了scanf("%d%*c%d%*c%d")
%*的作用是读取该类型数据但不存储,也就是跳过该数据。
1 scanf("%d%*c%d%*c%d",&sh,&sm,&ss);2 scanf("%d%*c%d%*c%d",&th,&tm,&ts);
欢快地A掉了题
——
开始写题解的时候,突然发现读入优化末尾的最后一次getchar()可以直接把冒号跳过去……
1 sh=read();sm=read();ss=read();2 th=read();tm=read();ts=read();
就像这样,完全等效。
鄙视一下一分钟前自己的智商。
1 /*by SilverN*/ 2 #include3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 int read(){ 9 int x=0,f=1;char ch=getchar();10 while(ch<'0' || ch>'9'){ if(ch=='-')f=-1;ch=getchar();}11 while(ch>='0' && ch<='9'){x=x*10+ch-'0';ch=getchar();}12 return x*f;13 }14 long long w;15 int sh,sm,ss;16 int th,tm,ts;17 int main(){18 // scanf("%d%*c%d%*c%d",&sh,&sm,&ss);19 // scanf("%d%*c%d%*c%d",&th,&tm,&ts);20 sh=read();sm=read();ss=read();21 th=read();tm=read();ts=read();22 scanf("%lld",&w);23 long long tmp=(long long)th*3600-sh*3600+tm*60-sm*60+ts-ss;24 tmp*=w;25 cout< <