时钟
题目描述
你有一个电子钟,可以显示 0:00 到 23:59 之间的所有时间,以数字的形式显示。其中小时是 0 到 23(0 时会显示一个 0,而 1 到 9 时不会显示前导 0),分钟是 00 到 59(0 到 9 分都会显示前导 0)。任何时刻,电子钟都会显示三个或者四个 0 00 到 9 99 的数字。如果在某时刻,这些数字依次组成了一个等差数列,则这个时刻被称为“好时刻”。
你感觉很无聊,从 0:00 时刻开始盯着这个电子钟。一共盯了 x xx 分钟。请问整个过程中,"好时刻"来临了多少次(算上开头和结尾)?
输入格式
一个不超过10^9的非负整数。
输出格式
请输出"好时刻"来临了多少次?
输入样例1:
120
输出样例1
10
输入样例2:
2880
输出样例2
79
输入样例3:
在这里给出一组输入。例如:
987654321
输出样例3:
在这里给出相应的输出。例如:
26748975
#include<stdio.h>
int main(){
int n;//输入的分钟
int circle;//圈数 一圈39(从例二可以看出)
int hour;//小时
int minute;//分钟
int count=0;//总次数
int d1,d2,d3;
scanf("%d\n",&n);
circle=n/60/24;
hour=(n-circle*24*60)/60;
minute=n%60;
for(int x_hour=0;x_hour<hour;x_hour++){
for(int x_minute=0;x_minute<60;x_minute++){
int h1=0,h2,m1,m2;
if(x_hour<10){
h2=x_hour;
}
if(x_hour>10){
h1=x_hour/10;
h2=x_hour%10;
}
if(x_minute<10){
m1=0;
m2=x_minute;
}
if(x_minute>10){
m1=x_minute/10;
m2=x_minute%10;
}
if(h1==0){
//三位数
d2=h2-m1;
d3=m1-m2;
if(d2==d3){
count++;
}
}else{
//四位数
d1=h1-h2;
d2=h2-m1;
d3=m1-m2;
if(d1==d2 && d2==d3){
count++;
}
}
}
}
//printf("%d\n",circle);
//乘以圈数
if(circle>0){
count = circle * 39 + count + 1;
}
printf("%d\n",count);
}