题解 P8651 [蓝桥杯 2017 省 B] 日期问题

题目传送门

蒟蒻又来交 Python 题解啦。

思路

年份从 1960196020592059,可以三重循环枚举,肯定不会超时。

主要是有几点很坑或者很麻烦:

  1. 判断闰年,22 月要写判断。

  2. 输出要排序。

  3. 前面可能要补 00

  4. 输入有 /,在 Python 中 input().split("/") 就可以啦。

  5. 输出要带 -,Python 的字符串可以直接相加拼在一起。

(这就是我用 Python 的原因)

AC 代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
def isLY(x):
return (x%4==0 and x%100!=0)or(x%400==0);

days = [0,31,28,31,30,31,30,31,31,30,31,30,31]
a,b,c = input().split("/")
a,b,c = int(a),int(b),int(c)

for i in range(1960,2060):
if(isLY(i)): days[2]=29;
else: days[2]=28;
for j in range(1,13):
for k in range(1,days[j]+1):
t = i%100
if (a==t and b==j and c==k) or (a==k and b==j and c==t) or (a==j and b==k and c==t):
sa = str(i)
if(j<=9): sb = "0"+str(j)
else: sb = str(j)
if(k<=9): sc = "0"+str(k)
else: sc = str(k)
print(sa+"-"+sb+"-"+sc)

AC 记录

给个赞再走吧 qwq。


题解 P8651 [蓝桥杯 2017 省 B] 日期问题
https://sunnyli.咕咕咕.eu.org/solution-P8651/
作者
SunnyLi
发布于
2023年4月22日
许可协议