Codeforces Round #419 (Div. 2) A. Karen and Morning(模拟)

http://codeforces.com/contest/816/problem/A

题意:

给出一个时间,问最少过多少时间后是回文串。

 

思路:

模拟,先把小时的逆串计算出来:

① 如果逆串=分钟,那么此时已经是回文串了。

② 如果逆串>分钟,那么只需要逆串-分钟即可。(注意此时逆串>=60的情况)

③ 如果逆串<分钟,此时在这个小时内要构成回文串已经是不可能的了,那么就加上60-minute分钟,进入一个新的小时,然后重复上述步骤。

 1 #include<iostream>
 2 #include<algorithm>
 3 #include<cstring>
 4 #include<cstdio>
 5 #include<sstream>
 6 #include<vector>
 7 #include<stack>
 8 #include<queue>
 9 #include<cmath>
10 #include<map>
11 #include<set>
12 using namespace std;
13 typedef long long ll;
14 typedef pair<int,int> pll;
15 const int INF = 0x3f3f3f3f;
16 const int maxn=3*1e5+5;
17 
18 char str[10];
19 
20 int main()
21 {
22     //freopen("in.txt","r",stdin);
23     while(~scanf("%s",&str))
24     {
25         int hour = (str[0]-'0')*10 + (str[1]-'0');
26         int minute = (str[3]-'0')*10+(str[4]-'0');
27         int rev_h = (str[1]-'0')*10+str[0]-'0';
28         int rev_m = (str[4]-'0')*10+(str[3]-'0');
29 
30         if(hour==rev_m)   {puts("0");continue;}
31 
32         int ans=0;
33         while(true)
34         {
35             rev_h = (hour%10*10) + hour/10;
36             if(rev_h == minute)  break;
37             if(rev_h>minute && rev_h<60)
38             {
39                 ans+=rev_h-minute;
40                 break;
41             }
42 
43             else
44             {
45                 ans+=60-minute;
46                 minute=0;
47                 hour=(hour+1)%24;
48             }
49         }
50         printf("%d\n",ans);
51     }
52     return 0;
53 }

 

posted @ 2017-06-26 20:17  Kayden_Cheung  阅读(143)  评论(0编辑  收藏  举报
//目录