喊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開始的。邏輯上的轉圈是通過取余來實現的。