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);
*/
给出一个正整数,然后将该整数的每一位加起来,如果是只有个位数,就输出。
如果还大于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);
*/
相关文章推荐
- 杭电OJ(HDOJ)1013题:Digital Roots(数值分解)
- HDOJ(1013) ——Digital Roots(字符串模拟题)
- HDOJ HDU 1013 Digital Roots
- HDOJ 1013 Digital Roots(算是大数水题)
- HDOJ 1013 Digital Roots
- hdoj-1013-Digital Roots
- HDOJ - 1013 - Digital Roots(字符串、范围)
- hdoj.1013 Digital Roots 20140728
- Digital Roots(hdoj1013)
- Num 14: HDOJ: 题目1013 : Digital Roots
- HDOJ 1013 Digital Roots
- (HDOJ 1013)Digital Roots
- HDOJ 1013题Digital Roots 大数,9余数定理
- HDOJ1013 Digital Roots(高精度+数位分离求和)
- HDOJ 1013 Digital Roots
- HDOJ 1013题Digital Roots 大数,9余数定理
- hdoj 1013 Digital roots (陷阱水题)
- HDOJ 1013 Digital Roots
- HDOJ 1013 Digital Roots
- HDOJ1013 Digital Roots