华为OD机试-喊7游戏

 

 题目描述

喊7 是一个传统的聚会游戏,N个人围成一圈,按顺时针从1-7编号
编号为1的人从1开始喊数,下一个人喊得数字是上一个人喊得数字+1
但是当将要喊出数字7的倍数或者含有7的话,不能喊出 而是要喊过

假定N个人都没有失误。当喊道数字k时,可以统计每个人喊 “过"的次数

现给定一个长度n的数组,存储打乱的每个人喊”过"的次数,请把它还原成正确顺序,
即数组的第i个元素存储编号i的人喊“过“的次数

输入为1行,空格分割的喊过的次数, 注意k并不提供,k不超过200,数字个数为n
输出为1行,顺序正确的喊过的次数  空格分割

例子
输入
0 1 0
输出
1 0 0
只有一次过,发生在7,按顺序编号1的人遇到7  所以1 0 0,结束时的k不一定是7 也可以是 8 9, 喊过都是1 0 0

例子
输入
0 0 0 2 1
输出
0 2 0 1 0
一共三次喊过,发生在7 14 17,编号为2 的遇到7 17,编号为4 的遇到14。

代码实现(Python3)

方法一:

def relateSeven(n):
    return "7" in str(n) or n % 7 == 0


nums = list(map(int, input().split()))
# nums = [0,0,0,2,1]
k = len(nums)
flag = [0] * k # 与nuns长度相同的数组,用于统计对应位置出现与7相关的个数。
i = 1
while sum(nums) != 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值