您的位置:首页 > 其它

HDOJ1013 Digital Roots

2017-11-26 19:39 399 查看
题目链接: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);
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: