回文时间
回文时间
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
HH 每天都会熬夜写代码,然后很晚才睡觉,但是每天早晨六点多必须要刷卡出宿舍,这就导致了必须在某些课上睡一会才能保证充沛的体力,当然某些重要的课是不能睡掉的,而某些课是可以睡的,比如《中国传统文化》,但是睡觉是不能被老师发现的,否则......他会以让你重修两年来威胁你。已知老师会在电子表上显示的时间为回文(例如:15:51)的时候来检查有没有人在睡觉,所以必须要在那个时间之前醒来。现在,给出 HH 开始睡觉的时间,你要帮她计算出下一个回文时间。
输入
输入包含多组测试数据,对于每组测试数据:
输入只有一行为一个字符串,字符串格式为"HH:MM",HH 和 MM 都为两位数字(00 ≤ HH ≤ 23, 00 ≤ MM ≤ 59)。
输出
对于每组测试数据,输出只有一行为下一个回文时间。
示例输入
12:21 23:59
示例输出
13:31 00:00
1 #include<stdio.h> 2 struct vode 3 { 4 int a; 5 int c; 6 }f[50]; 7 int main() 8 { 9 int a,b; 10 f[0].a=00; 11 f[0].c=00; 12 f[1].a=01; 13 f[1].c=10; 14 f[2].a=02; 15 f[2].c=20; 16 f[3].a=03; 17 f[3].c=30; 18 f[4].a=04; 19 f[4].c=40; 20 f[5].a=05; 21 f[5].c=50; 22 f[6].a=10; 23 f[6].c=01; 24 f[7].a=11; 25 f[7].c=11; 26 f[8].a=12; 27 f[8].c=21; 28 f[9].a=13; 29 f[9].c=31; 30 f[10].a=14; 31 f[10].c=41; 32 f[11].a=15; 33 f[11].c=51; 34 f[12].a=20; 35 f[12].c=02; 36 f[13].a=21; 37 f[13].c=12; 38 f[14].a=22; 39 f[14].c=22; 40 f[15].a=23; 41 f[15].c=32; 42 f[16].a=00; 43 f[16].c=00; 44 char g[6]; 45 while(scanf("%s",g)!=EOF) 46 { 47 a=(g[0]-'0')*10+g[1]-'0'; 48 b=(g[3]-'0')*10+g[4]-'0'; 49 int i,k=0; 50 for(i=0;i<=15;i++) 51 { 52 if(f[i].a>=a) 53 { 54 if(b<f[i].c) 55 { 56 if(f[i].a>=0&&f[i].a<=9) 57 printf("0%d:",f[i].a); 58 else printf("%d:",f[i].a); 59 if(f[i].c>=0&&f[i].c<=9) 60 printf("0%d\n",f[i].c); 61 else printf("%d\n",f[i].c); 62 k=1; 63 } 64 if((b>=f[i].c&&a>=0&&a<=5)||(b>=f[i].c&&a>=10&&a<=15)||b>=f[i].c&&a>=20&&a<=23) 65 { 66 if(f[i+1].a>=0&&f[i+1].a<=9) 67 printf("0%d:",f[i+1].a); 68 else printf("%d:",f[i+1].a); 69 if(f[i+1].c>=0&&f[i+1].c<=9) 70 printf("0%d\n",f[i+1].c); 71 else printf("%d\n",f[i+1].c); 72 k=1; 73 } 74 if(a>=6&&a<=9&&b>=f[i].c||(a>=16&&a<=19&&b>=f[i].c)) 75 { 76 if(f[i].a>=0&&f[i].a<=9) 77 printf("0%d:",f[i].a); 78 else printf("%d:",f[i].a); 79 if(f[i].c>=0&&f[i].c<=9) 80 printf("0%d\n",f[i].c); 81 else printf("%d\n",f[i].c); 82 k=1; 83 } 84 } 85 if(k==1)break; 86 } 87 } 88 }