当前位置: 代码迷 >> 综合 >> HDOJ1013 Digital Roots
  详细解决方案

HDOJ1013 Digital Roots

热度:55   发布时间:2023-12-14 01:48:22.0

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



  相关解决方案