喊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 所以100

结束时的k不一定是7 也可以是 8 9

喊过都是100

例子

输入

0 0 0 2 1

输出

0 2 0 1 0

一共三次喊过

发生在7 14 17

编号为2 的遇到7 17

编号为4 的遇到14

let arr = '0 1 0'.split(' ')
let memberArr = []
let time = 0
let maxLen = 0
for(let i=1;i<=arr.length;i++){
    maxLen += Number(arr[i-1])
    memberArr.push({
        index:i,
        time:0
    })
}
console.log(maxLen);
let num  = 0
while (time<maxLen){
    for(let i of memberArr){
        num++
        if(num%7===0||String(num).indexOf('7')>-1){
            i.time+=1
            time++
        }
    }
}
let resultArr = []
memberArr.map(e=>{
    resultArr.push(e.time)
})

console.log(resultArr.join(' '));
机试题 文章被收录于专栏

某机试题,网上很少用js写的答案只有自己写了

全部评论

相关推荐

牛客44664404...:把个人技能删了搞这么长干什么!还有你面试要先针对那个公司的技术栈专门去准备,别一问三不知,他需要你会他们公司对口的技术,写这么多不对口没有用
点赞 评论 收藏
分享
评论
点赞
5
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务