- 闰年判断
资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
给定一个年份,判断这一年是不是闰年。
当以下情况之一满足时,这一年是闰年:
1. 年份是4的倍数而不是100的倍数;
2. 年份是400的倍数。
其他的年份都不是闰年。
输入格式
输入包含一个整数y,表示当前的年份。
输出格式
输出一行,如果给定的年份是闰年,则输出yes,否则输出no。
- 解答程序
y = int(input())
if y % 4 == 0:
if y % 100 == 0:
if y % 400 == 0:
print('yes')
else:
print('no')
else:
print('yes')
else:
print('no')
- 经验教训
无。
- 闰年判断
资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
给定一个年份,判断这一年是不是闰年。
当以下情况之一满足时,这一年是闰年:
1. 年份是4的倍数而不是100的倍数;
2. 年份是400的倍数。
其他的年份都不是闰年。
输入格式
输入包含一个整数y,表示当前的年份。
输出格式
输出一行,如果给定的年份是闰年,则输出yes,否则输出no。
- 解答程序
y = int(input())
if y % 4 == 0:
if y % 100 == 0:
if y % 400 == 0:
print('yes')
else:
print('no')
else:
print('yes')
else:
print('no')
- 经验教训
无。
- 闰年判断
资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
给定一个年份,判断这一年是不是闰年。
当以下情况之一满足时,这一年是闰年:
1. 年份是4的倍数而不是100的倍数;
2. 年份是400的倍数。
其他的年份都不是闰年。
输入格式
输入包含一个整数y,表示当前的年份。
输出格式
输出一行,如果给定的年份是闰年,则输出yes,否则输出no。
- 解答程序
y = int(input())
if y % 4 == 0:
if y % 100 == 0:
if y % 400 == 0:
print('yes')
else:
print('no')
else:
print('yes')
else:
print('no')
- 经验教训
无。
- 01字串
资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:
00000
00001
00010
00011
00100
请按从小到大的顺序输出这32种01串。
输入格式
本试题没有输入。
输出格式
输出32行,按从小到大的顺序每行一个长度为5的01串。
样例输出
00000
00001
00010
00011
<以下部分省略>
- 解答程序
for i in range(32):
count = i
temp = ""
flag = [0, 0, 0, 0, 0]
if count >= 16:
flag[4] = 1
count = count - 16
if count >= 8:
flag[3] = 1
count = count - 8
if count >= 4:
flag[2] = 1
count = count - 4
if count == 3:
flag[1] = 1
flag[0] = 1
elif count == 2:
flag[1] = 1
flag[0] = 0
elif count == 1:
flag[1] = 0
flag[0] = 1
elif count == 0:
flag[1] = 0
flag[0] = 0
else:
flag[2] = 0
if count == 3:
flag[1] = 1
flag[0] = 1
elif count == 2:
flag[1] = 1
flag[0] = 0
elif count == 1:
flag[1] = 0
flag[0] = 1
elif count == 0:
flag[1] = 0
flag[0] = 0
else:
flag[3] = 0
if count >= 4:
flag[2] = 1
count = count - 4
if count == 3:
flag[1] = 1
flag[0] = 1
elif count == 2:
flag[1] = 1
flag[0] = 0
elif count == 1:
flag[1] = 0
flag[0] = 1
elif count == 0:
flag[1] = 0
flag[0] = 0
else:
flag[2] = 0
if count == 3:
flag[1] = 1
flag[0] = 1
elif count == 2:
flag[1] = 1
flag[0] = 0
elif count == 1:
flag[1] = 0
flag[0] = 1
elif count == 0:
flag[1] = 0
flag[0] = 0
else:
flag[4] = 0
if count >= 8:
flag[3] = 1
count = count - 8
if count >= 4:
flag[2] = 1
count = count - 4
if count == 3:
flag[1] = 1
flag[0] = 1
elif count == 2:
flag[1] = 1
flag[0] = 0
elif count == 1:
flag[1] = 0
flag[0] = 1
elif count == 0:
flag[1] = 0
flag[0] = 0
else:
flag[2] = 0
if count == 3:
flag[1] = 1
flag[0] = 1
elif count == 2:
flag[1] = 1
flag[0] = 0
elif count == 1:
flag[1] = 0
flag[0] = 1
elif count == 0:
flag[1] = 0
flag[0] = 0
else:
flag[3] = 0
if count >= 4:
flag[2] = 1
count = count - 4
if count == 3:
flag[1] = 1
flag[0] = 1
elif count == 2:
flag[1] = 1
flag[0] = 0
elif count == 1:
flag[1] = 0
flag[0] = 1
elif count == 0:
flag[1] = 0
flag[0] = 0
else:
flag[2] = 0
if count == 3:
flag[1] = 1
flag[0] = 1
elif count == 2:
flag[1] = 1
flag[0] = 0
elif count == 1:
flag[1] = 0
flag[0] = 1
elif count == 0:
flag[1] = 0
flag[0] = 0
flag = [flag[4 - i] for i in range(5)]
print("".join(map(str, flag)))
- 经验教训
1、加权输出的逻辑顺序弄反了,因此最后flag数组又做了一次翻转。
2、最初第一遍测试时没有发现count等于幂次的情况,后加上了等于号。
3、函数意识不够,事实上在上方取了count - 2^k之后才发现可以将判断统一为函数的,最初并没有发现。
4、整数列表输出为字符串的方法: “”.join(map(str, flag))
5、python提供bin函数,利用这个可以快速将整数变为二进制,因此本题也可以这样写
for i in range(32):
print("0" * (5-len(bin(i)[2:])) + bin(i)[2:])