练习时长两年半的大西瓜很幸福 level
获赞
9
粉丝
0
关注
9
看过 TA
8
岡山大学
2024
测试开发
IP属地:日本
暂未填写个人简介
私信
关注
2024-08-21 19:00
已编辑
岡山大学 测试开发
已知2011年11月11日是星期五,问YYYY年MM月DD日是星期几?注意考虑闰年的情况。尤其是逢百年不闰,逢400年闰的情况。输入格式输入只有一行YYYY MM DD输出格式输出只有一行W数据规模和约定1599 <= YYYY <= 29991 <= MM <= 121 <= DD <= 31,且确保测试样例中YYYY年MM月DD日是一个合理日期1 <= W <= 7,分别代表周一到周日样例输入2011 11 11样例输出5Python示例(输入必须为真实存在且和为题目要求相一致的输入,例如1111年11月11日和2011年2月30日就不能作为输入,类似边界条件待补充)a = "2011 11 11"def ifRunNian(y1):y = int(y1)if y >= 1599 and y <= 2999:if y%4==0 :if y%100==0:if y%400==0:return 366else:return 365else:return 366else:return 365else:return -1def month2day(y1, m1):m = int(m1)yb = ifRunNian(y1)if m <= 12 and m >= 1:if m == 1 or m == 3 or m == 5 or m == 7 or m == 8 or m == 10 or m == 12:return 31elif m == 4 or m == 6 or m == 9 or m == 11:return 30elif m == 2:if yb == 366:return 29elif yb == 365:return 28print(m)def getDeltaYear(y1):y = int(y1)deltaYList = []if y < 2011 and y <= 2999:for i in range(2011-y):deltaYList.append(y+i)elif y>=2011 and y <= 2999:for i in range(y-2011):deltaYList.append(2011+i)return tuple(deltaYList)def getDeltaDay(y1, m1, d1):deltaAllDay = 0y = int(y1)m = int(m1)d = int(d1)deltaMList = []dy = getDeltaYear(y1)if y < 2011 or (y == 2011 and m < 11) or (y == 2011 and m == 11 and d < 11):if dy != ():for i in dy:if i == dy[0]:for j in range(m, 13):# print(int(j))md =  month2day(i, j)deltaAllDay += mddeltaAllDay -= delse:deltaAllDay += ifRunNian(i)for j in range(1, 11):deltaAllDay += month2day(int(i)+1, j)deltaAllDay += 11else:i = 2011for j in range(m, 11):md = month2day(i, j)deltaAllDay += mddeltaAllDay -= ddeltaAllDay += 11deltaAllDay = -deltaAllDay# elif y < 2011 or (y == 2011 and m < 11) or (y == 2011 and m == 11 and d < 11):elif y > 2011 or (y == 2011 and m > 11) or (y == 2011 and m == 11 and d > 11):if dy != ():print(dy)for i in dy:if i == dy[0]:for j in range(11, 13):deltaAllDay += month2day(i, j)deltaAllDay -= 11else:deltaAllDay += ifRunNian(i)for j in range(1, m):deltaAllDay += month2day(int(i)+1, j)deltaAllDay += delse:i = 2011for j in range(11, m):md = month2day(i, j)deltaAllDay += mddeltaAllDay -= 11deltaAllDay += dreturn deltaAllDaydef day2week(deltaAllDay):if deltaAllDay < 0:deltaAllDay = - deltaAllDaye = 5- deltaAllDay % 7print(e)while e <= 0:e += 7while e > 7:e -= 7print(f'星期{e}')else:e = 5 + deltaAllDay % 7while e <= 0:e += 7while e > 7:e -= 7print(f'星期{e}')print(a)ymd = a.split(" ")y, m, d = (ymd[0], ymd[1], ymd[2])print(f'{y}, {m}, {d}')# day2week(y, m, d)k = getDeltaDay(1949, 10, 1)print(k)day2week(k)print(month2day(2012, 2))
0 点赞 评论 收藏
分享

创作者周榜

更多
关注他的用户也关注了:
牛客网
牛客网在线编程
牛客网题解
牛客企业服务