11.喊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。

 

查看代碼

import java.util.*;

public class Demo11 {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        String[] split = sc.nextLine().split(" ");
        int len = split.length;
        int sum = 0;
        for(String s : split){
            sum += Integer.parseInt(s);
        }

        int[] res = new int[len];
        int flag = 0;
        for(int i = 1; i < 300; i++){ //編號從1開始
            if(i % 7 == 0 || (i +"").contains("7")){
                res[(i - 1) % len]++; //這里需要好好體會
                flag++;
            }
            if(flag == sum) break;
        }

        for(int i = 0; i < len; i++){
            if(i != len - 1){
                System.out.print(res[i] + " ");
            }else{
                System.out.print(res[i]);
            }
        }
    }
}

 

注意:喊數是從1開始,但是數組下標是從0開始的。邏輯上的轉圈是通過取余來實現的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM