题目链接: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);
*/