由于输入的数字1<=n<=10的100次方,所以肯定不能直接用int,或者long类型来存储输入的数字,而是要采取字符串的形式进行存储
由于:
10的一次方:10 (后面1个0)
10的2次方:100 (后面2个0)
10的3次方:1000 (后面3个0)
10的4次方:10000 (后面4个0)
.
10的100次方 :(1后面有100个0)
所以10的100次方一共有101个数
这101个数,把每一位加起来用一个int型整数进行存储绰绰有余,
此时就可以进行树根的计算了。
代码如下:
import java.util.Scanner;
/**
* @version 1.0
* @Author XuHeng
* @Date 2021/5/18 0:10
*/
public class Main {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
while (scanner.hasNext()){
String string=scanner.nextLine();
char[] arr=string.toCharArray();
int sum=0;
for (int i = 0; i < string.length() ; i++) {
sum+=(arr[i]-'0');//计算字符串的各位之和
}
System.out.println(numRoot(sum));
}
}
private static int numRoot(int n){
int sum=0;
while (n>0){//判断n是否是一个 一位数
//若n不是一位数,则计算它的各位之和
int n1=n%10;
sum+=n1;
n/=10;
}
if (sum/10>0){//判断各位之和是否是一个 个位数
//若不是,继续求它的树根
return numRoot(sum);
}
//否则结束计算
return sum;
}
}


京公网安备 11010502036488号