報數 | 1 | 2 | 3 | 4 | 5 | 6 | 7* | 8 | 9 | 10 | 11 | 12 | 13 | 14* | 15 | 16 | 17* | 18 | … |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
id | 1 | 2 | 3 | 4 | 1 | 2 | 3* | 4 | 1 | 2 | 3 | 4 | 1 | 2* | 3 | 4 | 1* | 2 | … |
如上
1234指代甲乙丙丁
大小爲4的數組 cnts 用來記錄甲乙丙丁跳過的次數,題目n爲總共可以報的次數(不包括跳過的數,因爲跳過了,沒報出來),每報一次 n-1。
死循環報數,遇到7的倍數和帶7的數跳過不報,所以n不變。報數號碼除與4求餘得,到對應的人,對應數組下標(我是從0開始做下標,最後的餘數減一了),次數加1。其餘報數號碼要報出來,n-1,直到n==0退出循環。
python代碼:
n = int(input())
cnts = [0, 0, 0, 0]
i = 1
while n:
if i % 7 == 0 or '7' in str(i):
cnts[i % 4 - 1] += 1
else:
n -= 1
i += 1
for cnt in cnts:
print(cnt)