CSP 201912-1报数 (Python)

在这里插入图片描述
写完了才想起用字符串判断,我这是一点点算的,很笨,但还算详细。(菜鸡成长日记)

list = [0,0,0,0]  #用于存放甲、乙、丙、丁的跳过次数
m = 0  #后面用于判断停止位置
def addone():  #定义“加一”函数,每次跳过给相应的人跳过数加一
    j = i % 4  #判断跳过的人是谁
    list[j-1] += 1  #因为列表序列从零开始,所以j要减一
n = int(input())
for i in range(n*10):  #因为报20个数的时候丁报到了24,不知道报n个数要报到哪,所以乘了个十保证覆盖所有数据,可替换,足够大就行
    if m == n:  #上一行乘了十,所以本行判断一下停止位置,后面有m++,m加到等于n的时候,就已经报出了n个数,终止循环。(结合下面m+=1那行注释)
        break
    i += 1  #range第一个数是零,报数从一开始,所以加个一
    if i % 7 == 0:  #判断是不是7的倍数
       addone()
    else:
        if 700<i<800:  #700到799都跳过
            addone()
        else:
            i %= 100  #除了700-799,大于一百的数据都把百位去掉再处理
            if i % 10 == 7:  #判断个位是7的数
                addone()
            elif i // 7 == 10:  #判断十位是7的数
                addone()
            elif i == 78:  #上一条不能判断78和79,单独列出来
                addone()
            elif i == 79:
                addone()
            else:
                m += 1  ##每个没跳过的数,也就是成功报出的数都使m+1,加到和n一样就报出了n个数,终止。
print(list[0])
print(list[1])
print(list[2])
print(list[3])
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值