喊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写的答案只有自己写了

全部评论

相关推荐

我的offer呢😡:这不才9月吗,26到明年毕业前能一直找啊,能拿下提前批,转正的,offer打牌的都是有两把刷子的,为什么非要跟他们比。如果别人是9本硕+金牌+好几段大厂实习呢?如果别人是双非通天代呢?如果别人是速通哥呢?,做好自己就行了,我们做不到他们一样提前杀死比赛,但晚点到终点也没啥关系吧
双非应该如何逆袭?
点赞 评论 收藏
分享
野猪不是猪🐗:还是太卑微了,什么叫放弃本次面试应该说经过评估,贵公司与自己不匹配,决定不再推进后续流程
点赞 评论 收藏
分享
评论
点赞
5
分享

创作者周榜

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