• 第五届“传智杯”全国大学生计算机大赛(练习赛)[传智杯 #5 练习赛] 时钟


    [传智杯 #5 练习赛] 时钟

    题目描述

    你有一个电子钟,可以显示 0:0023:59 之间的所有时间,以数字的形式显示。其中小时是 023(0 时会显示一个 0,而 1 到 9 时不会显示前导 0),分钟是 0059(0 到 9 分都会显示前导 0)。任何时刻,电子钟都会显示三个或者四个 0 0 0 9 9 9 的数字。如果在某时刻,这些数字依次组成了一个等差数列,则这个时刻被称为“好时刻”。

    你感觉很无聊,从 0:00 时刻开始盯着这个电子钟。一共盯了 x x x 分钟。请问整个过程中,"好时刻"来临了多少次(算上开头和结尾)?

    输入格式

    一个不超过 1 0 9 10^9 109 的非负整数。

    输出格式

    请输出"好时刻"来临了多少次?

    样例 #1

    样例输入 #1

    120
    
    • 1

    样例输出 #1

    10
    
    • 1

    样例 #2

    样例输入 #2

    2880
    
    • 1

    样例输出 #2

    79
    
    • 1

    样例 #3

    样例输入 #3

    987654321
    
    • 1

    样例输出 #3

    26748975
    
    • 1

    提示

    【样例解释】

    你观察了 2 个小时,其中这些“好时刻”来临了:

    0:00
    0:12
    0:24
    0:36
    0:48
    1:11
    1:23
    1:35
    1:47
    1:59
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    一共是 10 个。

    题解

    #include
    
    int main(){
    	int hour,minute,one,two,three,four,time,cir,mod,num = 0;
    	scanf("%d",&time);
    	cir = time/1440;
    	mod = time%1440;
    	num += cir*39;
    	hour = mod/60;
    	minute = mod%60;
    	if(hour<10){
    		one = hour;
    		two = minute/10;
    		three = minute%10;
    		for(int i=0;i<one;i++){
    			for(int j=0;j<=5;j++){
    				for(int k=0;k<=9;k++){
    					if(k-j==j-i){
    						num++;
    					}
    				}
    			}
    		}
    		for(int j=0;j<two;j++){
    			for(int k=0;k<=9;k++){
    				if(k-j==j-one){
    					num++;
    				}
    			}
    		}
    		for(int k=0;k<=three;k++){
    			if(k-two==two-one){
    				num++;
    			}
    		}
    	}else{
    		num += 34;
    		one = hour/10;
    		two = hour%10;
    		three = minute/10;
    		four = minute%10;
    		for(int i=1;i<one;i++){
    			for(int j=0;j<=3;j++){
    				for(int k=0;k<=5;k++){
    					for(int l=0;l<=9;l++){
    						if(l-k==k-j && k-j == j-i){
    							num++;
    						}
    					}
    				}
    			}
    		}
    		for(int j=0;j<two;j++){
    			for(int k=0;k<=5;k++){
    				for(int l=0;l<=9;l++){
    					if(l-k==k-j && k-j == j-one){
    						num++;
    					}
    				}
    			}
    		}
    		for(int k=0;k<three;k++){
    			for(int l=0;l<=9;l++){
    				if(l-k==k-two && k-two == two-one){
    					num++;
    				}
    			}
    		}
    		for(int l=0;l<=four;l++){
    			if(l-three==three-two && three-two == two-one){
    				num++;
    			}
    		}
    	}
    	printf("%d",num);
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77

    在这里插入图片描述

  • 相关阅读:
    【多线程笔记01】多线程之CountDownLatch介绍及其使用
    [SpringBoot系列]SpringBoot如何整合SSMP
    Mysql删除重复数据只保留一条
    深入Python网络编程:基础、工具和实践
    ShuffleNetV1:极致轻量化卷积神经网络(分组卷积+通道重排)
    Node.js版本管理工具nvm安装
    java BufferedReader类、BufferedWriter类
    1990-2021年全国30省城镇登记失业率
    【短道速滑九】仿halcon中gauss_filter小半径高斯模糊优化的实现
    [python 刷题] 42 Trapping Rain Water
  • 原文地址:https://blog.csdn.net/L6666688888/article/details/127938861