Python

【题目描述】

甲乙丙丁决定玩一个报数的游戏来打发时间。游戏规则为四个人从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')

评论

This is just a placeholder img.