题目
在视线不太好的黑夜一司机撞伤行人之后逃逸,有3个目击者记住了该车的部分车号特征。
甲说:“车牌号的前两位相同,且末位数是奇数”;乙说:“车牌号的后两位加起来等于5”;
丙说:“车牌号是一个N位数,并且能被3整除”。请你写一个程序,该程序接受一个正整数N(>=3),
找出肇事车可能的车牌号。
输入格式:
一个>=3的正整数
输出格式:
全部可能的车牌号(一行一个,按递增序)
输入样例:
3
输出样例:
441
解题
题目代码:
N = int(input())
for i in range(10**(N-1),10**N):
if i % 2 == 1 and i//10**(N-1)==i//10**(N-2)%10:
if i%10 + i//10%10 == 5 and i%3 == 0:
print(i)
代码解释:
第二行利用for循环对range生成的range list进行遍历,范围是[10**(N-1),10**N-1]
比如输入N为3,所以范围为[100,999]
第三行是通过if判断i是否为奇数以及i的前两位是否相同
第四行是判断最后两位加起来是否为5以及i是否被3整除
代码内相关内容解释:
range(10**(N-1),10**N)
这样range生成的数都是N位
//
向下取整(丢弃小数)
i//10**(N-1) i//10**(N-2)%10
这样分别是取出了i的第一位和第二位
i%10 i//10%10
这样分别是取出来i的最后一位和倒数第二位
**的优先级高于//
总结
此题目主要是考查对//和%的掌握,直接看代码可能不太好理解,可以结合说明进行对比阅读,然后就是range取值范围可以理解一下,整体来说题目难度适中