201912-1 报数
【题目描述】
甲乙丙丁决定玩一个报数的游戏来打发时间。游戏规则为四个人从1开始轮流进行报数,但如果需要报出的数是7的倍数或含有数字7则直接跳过。
此外大家约定,在总共报出了n个数后(不计入被跳过的数)游戏结束。现在需要你来帮忙统计,游戏过程中每个人各自跳过了几次。
【输入格式】
从标准输入读入数据。
输入仅一行,包含一个正整数n
,表示报出了多少个数后游戏结束。
【输出格式】
输出到标准输出。
输出共四行,每行一个整数,依次表示甲乙丙丁四人在游戏过程中跳过的次数。
【样例1 输入】
20
【样例1 输出】
2
1
1
0
【样例1 解释】
报数过程为:
甲:1,乙:2,丙:3,丁:4
甲:5,乙:6,丙:跳过,丁:8
甲:9,乙:10,丙:11,丁:12
甲:13,乙:跳过,丙:15,丁:16
甲:跳过,乙:18,丙:19,丁:20
甲:跳过,乙:22,丙:23,丁:24
在丁报出24后,四个人总计报出了20个数,游戏结束。
【样例2 输入】
66
【样例2 输出】
7
5
11
5
【子任务】
- 测试点1、2、3、4和5,保证$n≤10^2$;
- 测试点6、7、8、9和10,保证$n≤666$。
【解题程序】
n = int(input()) #输入
passTimes = [0, 0, 0, 0] #记录跳过的次数
count = 0 #报数的个数
i = 0
while 1:
i += 1
if i % 7 == 0 or '7' in str(i):
#数字i是否跳过
for k in range(4):
if i % 4 == (k+1) % 4:
passTimes[k] += 1
continue
count += 1
if count == n: #终止条件
break
print(*passTimes, sep='\n')