网易笔试题:魔法手环
具体的题目内容忘记了,不过大概意思就是:环上的数字不能大于100,若大于100,则对100取余,保留余数。每次魔法后环上数字变为当前数字加上后一个数字的和,最后一个数字为当前数字加上第一个数字,即:f(n) = f(n)+f(n+1);
这是我写的算法,因为时间紧张,可能会有不对的地方,欢迎点评。
package 牛客算法题;
import java.util.Scanner;
public class 魔力手环 {
public static void main(String args[]){
Scanner in = new Scanner(System.in);
int a=0 ,b=0;
System.out.println("请输入:数字个数 魔力次数");
while (in.hasNextInt()) {
a = in.nextInt();
b = in.nextInt();
if(a != 0 && b !=0)
break;
}
int[] num = new int[a + 1];
int[] num2 = new int[a+1];
int i = 0;
System.out.println("请输入 " + a + "个数字:");
while(i < a){
num[i] = in.nextInt();
i++;
}
for(int x=0; x<b; x++){
for(int t=0; t<a; t++){
if(t == a-1){
num2[t] = (num[t] + num[0])%100;
}
else
num2[t] = (num[t] + num[t+1])%100;
}
for(int s=0; s<a; s++){
num[s] = num2[s];
}
}
for(int x=0; x<a; x++){
System.out.print(num[x] + " ");
}
}
}