题目描述:
![](https://i-blog.csdnimg.cn/blog_migrate/5c3002305d453407cba59c77bb8a6aca.png)
解题思路:
解题思路:
运用数学中的分步相乘的原理
根据题目的要求,其实我们可以分为三大段,年为一段,月日为一段,时分为一段。每一段都可以组成4个数字的数(日月会补0),从中可以下图可以看出年的限制条件最宽松,其次是时,分 限制最严格的是月,日 所以先从月,日分析。
在相同的数字中我们只能取 1 和 2 ,不可能出现 0 月,0 时
所有月日的组合可以是:(01,11)(02,22)03~09月无 (10,11)(11,01)(11,10~19)
(12,11)(12,22)
最严格的列出了,就可以让时分组成的一段进行匹配(如月是(01,11),那么时分可以为(01,11)(11,10)(11,01)(10,11)4种。年可以先不进匹配(因为总会有4种方法,所以最后乘以4就可以),先让月日与时分匹配。
![](https://i-blog.csdnimg.cn/blog_migrate/fed1df3117bf83d61262e3542f0c13ed.png)
def panduan(n): #判断满足题意字符串,设立函数进行判断
if n.count('1')==3 or n.count('2')==3: #count()函数进行统计
return True #满足返回True
return False #不满足返回False
day=[] # 月 日
for m in range(1,13): #月
for d in range(1,31): #日
s="%02d%02d" %(m,d) #格式化补 0
s1=sorted(s) #排序好进行配对
if panduan(s): #判断是否满足题意
day.append(s1)
hour=[] # 时间:小时和分钟
for h in range(0,24): #时
for m in range(0,60): #分
s="%02d%02d" %(h,m)
s1=sorted(s) #排序好进行配对
if panduan(s): #判断是否满足题意
hour.append(s1)
sum = 0
for j in day: #遍历月日
for k in hour: #遍历时分
if j==k: #进行 配对
sum+=1
print(sum*4) #乘4就把年的情况加进去了
结果:
![](https://i-blog.csdnimg.cn/blog_migrate/b48a2d8e67db77bae79cbca2743bf4e2.png)