posts - 12,  comments - 0,  views - 224

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即
可。
2022年2月22日22:20是个很有意义的时间,年份为2022,由3个2和1
个0组成,如果将月和日写成4位,为0222,也是由3个2和1个0组成,如果
将时间中的时和分写成4位,还是由3个2和1个0组成。
小蓝对这样的时间很感兴趣,他还钱到了其它类似的例子,比如111年10月11日
0111,2202年2月22日22:H02等等.
请问,总共有多少个时间是这种年份写成4位、月日写成4位、时间写成4位后
由3个一种数字和1个另-种数字组成。注意1111年11月11日11:11不
算,因为它里面没有两种数字。

方法:

  • 手算算出每个月份的时间的排序
  • 代码实现
# 例子为2022 0222 2220
# 0111 1011 0111
# 2202 0222 2202

#年份太多了,我们这里按照月日入手
#符合的有0111、1011、1101、1110
#1121、1112、1211
#1113、1114、1115、1116、1117、1118、1119
#0222、1222
#这个时候再看时分,时:01-23,分:01-59
#满足有四个
#满足有四个
#满足有前三个有3个,后四个有2个
#满足有四个
#日期无限制,排序皆4个
print(4*(4*4+3*4+3*3+4*2+2*4)) 212

代码一

def check(n):
  n=str(n)
  if n.count('1') ==3 or n.count('2') == 3: #只存在12的月份年份时秒的组合,1113:1113:1113,
  # 3313:1333:1333 中的月份不符合
    return True
  return False

def common_value(x,y,z): #都为3个数
  x = sorted(x) 
  y = sorted(y)
  z = sorted(z)
  if x==y==z:
    return True
  return False


years=[]
for year in range(1,10000):
  y = "%04d"%(year) # 没有填充满会用0补齐,如传入2得到'0002'
  if check(year):
    years.append(y)
months = []

for month in range(1,13):
  for day in range(1,31):
    q="%02d%02d"%(month,day) 
    if check(q):
      months.append(q)
times=[]
  
for time in range(1,24):
  for minute in range(1,60):
    t = "%02d%02d"%(time,minute)
    if check(t):
      times.append(t)
cnt = 0
for y in years:
  for m in months:
    for t in times:
      if common_value(y,m,t): #如果年月日时间相同 加入结果
        cnt+=1
print(cnt)

代码二

import os
import sys

# 请在此输入您的代码
# 1222 #1112 # 1333 #3333
def check(n):  # 1222 # 1112
  if n[0] == n[3]: return False
  if n[1] != n[2]: return False
  if n[0] == n[1] or n[2] == n[3]: return True
   #3333 3344
  return False
year=[]
for y in range(1,10000):
  s="%04d"%(y)
  s1=sorted(s)
  if check(s1): year.append(s1)
day=[]
for m in range(1,13):
  for d in range(1,31):
    s="%02d%02d"%(m,d)
    s1=sorted(s)
    if check(s1): 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 check(s1): hour.append(s1)
cnt=0
for i in year:
  for j in day:
    for k in hour:
      if i==j and i==k:
        cnt+=1
print(cnt)
posted on   逢考必过好吗秋梨膏  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· Apache Tomcat RCE漏洞复现(CVE-2025-24813)
< 2025年3月 >
23 24 25 26 27 28 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 1 2 3 4 5

点击右上角即可分享
微信分享提示