链接:https://ac.nowcoder.com/acm/problem/13584
来源:牛客网
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 131072K,其他语言262144K
64bit IO Format: %lld
题目描述
ElemenT马上就要毕业了,他打开日历看了看时间。发现日历上的日期都是2017-04-04这样的格式的,月和日如果不足2位数,前面都会补充0。
给定一个年份和月份,ElemenT把那个月的日期都按上述格式写到纸上,他现在想知道某种数字出现了多少次。
输入描述:
多组输入
每组输入一行,有3个数字y,m,x(1000<=y<=3000,1<=m<=12,0<=x<=9),分别代表年份,月份,和他想知道哪个数字出现的次数。
输出描述:
每组输出一个整数,表示数字x在这个月的日期里出现了多少次。
注意闰年和月和日如果不足2位数,前面都会补充0即可。
def fn(y):if (y%4 ==0 and y%100 !=0) or y%400 == 0:return Trueelse:return False
c1 = [1, 3, 5, 7, 8, 10, 12]
c2 = [4, 6, 9, 11]
c3 = [2]while True:try:res = 0y, m, x = list(map(int, input().split()))if m in c1:d = [12, 14, 13, 5, 3, 3, 3, 3, 3, 3]n = 31elif m in c2:d = [12, 13, 13, 4, 3, 3, 3, 3, 3, 3]n = 30elif m in c3 and fn(y):d = [11, 13, 13, 3, 3, 3, 3, 3, 3, 3]n = 29else:d = [11, 13, 12, 3, 3, 3, 3, 3, 3, 2]n = 28if m <= 9:d[0] += nd[m] += nelif m == 10:d[1] += nd[0] += nelif m == 11:d[1] += 2*nelse:d[1] += nd[2] += nres += d[x]if str(x) in str(y):res += (str(y).count(str(x)))*nprint(res)except:break