題目連結:Digital Roots
給出一個正整數,然後将該整數的每一位加起來,如果是隻有個位數,就輸出。
如果還大于10,就繼續将每一位加起來,直到隻有個位數。
但是值得注意的是,題目沒講整數的範圍,是以應該是使用大數BigInteger的。
下面AC代碼:
import java.math.BigInteger;
import java.util.Scanner;
public class Main{
private static Scanner scanner;
public static void main(String[] args) {
scanner = new Scanner(System.in);
while(scanner.hasNext()){
String string = scanner.next();
if(string.equals("0")){
break;
}
BigInteger n = new BigInteger(string);
BigInteger ten = new BigInteger(""+10);
BigInteger zero = new BigInteger(""+0);
while(n.compareTo(new BigInteger(""+9))>0){//這裡注意,是大于9,因為是兩位數
BigInteger vol = n;
BigInteger sum = zero;
while(vol.compareTo(zero)>0){//大于零就要繼續加
//sum += vol%10;
//vol /= 10;
sum = sum.add(vol.remainder(ten));
vol = vol.divide(ten);
}
//System.out.println(sum);
n = sum;
}
System.out.println(n);
}
}
}
/*
//這裡是WA的,應該使用上面的大數的方法。
while(scanner.hasNext()){
int n = scanner.nextInt();
if(n == 0){
break;
}
while(n>=10){
int vol = n;
int sum = 0;
while(vol>0){
sum += vol%10;
vol /= 10;
}
n = sum;
}
System.out.println(n);
*/