题目链接:https://www.luogu.org/problem/P1615
P1615 西游记公司
题目背景
一道极其无厘头的题目
题目描述
事情是这样的:西游记中的孙沙猪(孙杀猪)三徒弟在西天取经之后开始进入厦门大学经贸系学习经济,在1个小时的学习后,他们用暴力手段毕业了。然后,他们创办了三个公司——“花果山生态旅游山庄集团公司”“高老庄猪肉美食城有限公司”“流沙河轮渡有限公司”。虽然这三家公司出自“经卷出版社”社长唐三藏的徒弟们,但是仍然保持着0元以下的财政收入。于是,他们想到了一个无聊的方法——向别人偷!是这样的:如果猪八戒知道孙悟空要偷猪八戒的平底锅,猪八戒就不能去抢沙和尚的保时捷。现在,作为猪八戒手下首席智士(智障人士)的你,要帮助既聪明又愚蠢的猪八戒用那种不正当的手段挽救这个公司!你可以这样做:你已经知道孙悟空什么时候要来偷猪八戒的东西,而猪八戒又要在什么时间去抢沙和尚的东西,又知道猪八戒每秒钟可以偷沙和尚1台笔记本电脑,帮猪八戒算一算,自己在有限的时间内能偷到沙和尚多少台电脑,使得他有足够的时间来防御大师兄。
输入格式
第一行:时:分:秒(表示猪八戒打算去偷沙和尚笔记本电脑的时间)
第二行:时:分:秒(表示孙悟空打算去偷猪八戒平底锅的时间)
注:时间可能有前导0,也有可能没有。
第三行:猪八戒每秒可以偷沙和尚几台笔记本电脑
确保第一行的时间要比第二行的时间来得早。
输出格式
一个整数,有可能大于int(2^31-2),表示猪八戒能偷沙和尚笔记本的个数
输入输出样例
00:0:00 0:00:10 10
100
说明/提示
数据范围:
00:00:00到23:59:59
数量<=32767
这道题还是比较基础的一道题,主要考的是你的编程思想,和一些简单的模拟。题目不难,重点在输入的时候如何忽视前导0!!!
但是在这里我好想又想复杂了,写了一个函数来处理前导0,但我看题解中的大佬们用的做法是在输入的时候就直接处理前导0,比我用的做法简便多了,所以我又用大佬的做法又写了一篇代码(*^▽^*)
话不多说,上代码:
函数处理前导0:
1 #include<iostream> 2 #include<cstring> 3 4 using namespace std; 5 6 string a,b//a代表猪八戒打算去偷沙和尚笔记本电脑的时间,b代表孙悟空打算去偷猪八戒平底锅的时间 7 8 long long n;//n是猪八戒每秒能偷沙和尚的电脑的个数 9 10 int aa,bb;//转换成秒 11 12 void t(string x,int &y)//处理前导0 13 { 14 int len=x.size(),v=0; 15 for(int i=0;i<len;i++) 16 { 17 if(x[i]==':') 18 { 19 v++; 20 int m=0,k=1; 21 for(int j=i-1;j>=0;j--) 22 { 23 if(x[j]==':') break; 24 m+=(x[j]-'0')*k; 25 k*=10; 26 } 27 if(v==1) y+=m*3600; 28 else if(v==2) y+=m*60; 29 } 30 } 31 int m=0; v=1; 32 for(int i=len-1;i>=0;i--) 33 { 34 if(x[i]==':') break; 35 m+=(x[i]-'0')*v; 36 v*=10; 37 } 38 y+=m; 39 } 40 41 int main() 42 { 43 cin>>a>>b>>n; 44 t(a,aa); 45 t(b,bb); 46 cout<<(bb-aa)*n<<endl; 47 return 0; 48 }
大佬们的做法:
1 #include<iostream> 2 #include<cstdio> 3 4 using namespace std; 5 6 long long a,b,c,d,e,f,g,n; 7 8 int main() 9 { 10 scanf("%d:%d:%d",&a,&b,&c); 11 scanf("%d:%d:%d",&e,&f,&g); 12 scanf("%d",&n); 13 cout<<((e-a)*3600+(f-b)*60+g-c)*n<<endl; 14 return 0; 15 }
***郑重提示:
· scnaf可以自动忽略前导0!!!!(本题考点)
夯实基础,认真做好每一道题!!!
作者:Gmax
本文版权归作者和博客园共有,转载请用链接,请勿原文转载,Thanks♪(・ω・)ノ
2019-08-08