题目
求给定时间后的最近的回文时间。
分析
模拟。打表计算,枚举输出。
说明
ε=(´ο`*)))唉
#include <stdio.h>
#include <stdlib.h>
int palindromic[2400] = {0};
int main()
{
int last = 0;
for (int i = 0; i < 24; ++ i) {
for (int j = 0; j < 60; ++ j) {
if (i == 0) {
if (j < 10 || j%10 == j/10) {
palindromic[i*100 + j] = 1;
}
} else if (i < 10) {
if (i == j%10) {
palindromic[i*100 + j] = 1;
}
} else {
if (i/10 == j%10 && i%10 == j/10) {
palindromic[i*100 + j] = 1;
last = i*100 + j;
}
}
}
}
int n;
char HM[10];
while (~scanf("%d", &n)) {
for (int i = 0; i < n; ++ i) {
scanf("%s", &HM);
int value = (HM[0]-'0')*1000 + (HM[1]-'0')*100 + (HM[3]-'0')*10 + + (HM[4]-'0');
if (value >= last) {
printf("00:00\n");
} else {
for (int i = value+1; i < 2400; ++ i) {
if (palindromic[i]) {
printf("%02d:%02d\n", i/100, i%100);
break;
}
}
}
}
}
return 0;
}