喊7 是一个传统的聚会游戏,N个人围成一圈,按顺时针从1到N编号。
编号为1的人从1开始喊数,下一个人喊得数字是上一个人喊得数字+1,但是当将要喊出数字7的倍数或者含有7的话,不能喊出而是要喊“过”。
假定N个人都没有失误,当喊道数字k时,可以统计每个人喊 “过"的次数。
现给定一个长度n的数组,存储打乱的每个人喊”过"的次数,请把它还原成正确顺序,即数组的第i个元素存储编号i的人喊“过“的次数。
输入为1行,空格分割的喊过的次数, 注意k并不提供,k不超过200,数字个数为n
输出为1行,顺序正确的喊过的次数 空格分割
例子
输入
0 1 0
输出
1 0 0
#coding=utf-8; arr=list(map(int,input('喊过次数:').strip().split())) N=len(arr) #玩游戏的人数 sum1=sum(arr) #喊7的总次数 sum_7=0 #喊7的次数 count=1 #当前喊的数字 new_arr=[] #重新排列喊7次数的数组 '''先求出喊到哪个数字停止''' while sum_7<sum1: if count % 10 ==7 or count % 7 == 0: sum_7+=1 else: pass count+=1 '''先给重新喊7次数的数组每个元素赋值0''' for i in range(N): new_arr.append(0) '''在喊过的数字里面找7相关的数字,找到对应喊的人,在索引上面加上1''' for k in range(1,count): if k % 7 == 0 or k % 10 ==7: j = k % N #喊7的对应人编号 new_arr[j-1]+=1 #索引为编号-1 else: pass print(new_arr)