码迷,mamicode.com
首页 > 其他好文 > 详细

夯实基础——P1615 西游记公司

时间:2019-08-08 09:21:06      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:笔记本电脑   middle   nbsp   +=   marked   简便   lan   重点   com   

题目链接:https://www.luogu.org/problem/P1615

P1615 西游记公司

题目背景

一道极其无厘头的题目

题目描述

事情是这样的:西游记中的孙沙猪(孙杀猪)三徒弟在西天取经之后开始进入厦门大学经贸系学习经济,在1个小时的学习后,他们用暴力手段毕业了。然后,他们创办了三个公司——“花果山生态旅游山庄集团公司”“高老庄猪肉美食城有限公司”“流沙河轮渡有限公司”。虽然这三家公司出自“经卷出版社”社长唐三藏的徒弟们,但是仍然保持着0元以下的财政收入。于是,他们想到了一个无聊的方法——向别人偷!是这样的:如果猪八戒知道孙悟空要偷猪八戒的平底锅,猪八戒就不能去抢沙和尚的保时捷。现在,作为猪八戒手下首席智士(智障人士)的你,要帮助既聪明又愚蠢的猪八戒用那种不正当的手段挽救这个公司!你可以这样做:你已经知道孙悟空什么时候要来偷猪八戒的东西,而猪八戒又要在什么时间去抢沙和尚的东西,又知道猪八戒每秒钟可以偷沙和尚1台笔记本电脑,帮猪八戒算一算,自己在有限的时间内能偷到沙和尚多少台电脑,使得他有足够的时间来防御大师兄。

输入格式

第一行:时:分:秒(表示猪八戒打算去偷沙和尚笔记本电脑的时间)

第二行:时:分:秒(表示孙悟空打算去偷猪八戒平底锅的时间)

注:时间可能有前导0,也有可能没有。

第三行:猪八戒每秒可以偷沙和尚几台笔记本电脑

确保第一行的时间要比第二行的时间来得早。

输出格式

一个整数,有可能大于int(2^31-2),表示猪八戒能偷沙和尚笔记本的个数

输入输出样例

输入 #1
00:0:00
0:00:10
10
输出 #1
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

夯实基础——P1615 西游记公司

标签:笔记本电脑   middle   nbsp   +=   marked   简便   lan   重点   com   

原文地址:https://www.cnblogs.com/Gmax/p/11319114.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!