Oj1013 package calculator;
import java.math.BigInteger;
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
BigInteger b;
while (scanner.hasNext()) {
b = scanner.nextBigInteger();
if (b.intValue()==0) {
break;
} else if (b.mod(new BigInteger(String.valueOf(9))).intValue()==0){
System.out.println(9);
} else {
System.out.println(b.mod(new BigInteger(String.valueOf(9))));
}
}
}
}
//以上轉自網絡 ; 算法的原因如下: 比如34,我們是減去30加上3,其實就相當于減去3*9,
87這種,減去8*9是15,然後是再減去9,得到6
是以我們看到都是減去若幹個9,然後直到他是個位數為止,是以是mod9.如果mod9是0的話,輸出9.
有可能一些複雜的題目會利用到這個結論。
1.第一次寫想得很簡單,及用取餘的方法将每個數字的個位數相加,但是輸入值超過兩位數結果就出現錯誤。 原因:沒有考慮兩位數之後的情況
2.第二次改完之後又發現第一次輸入的值都能得到正确結果,但是往後輸入的值沒有辦法改變。 原因:在循環中輸入第二次值時沒有對某些變量初始化。
3.個人代碼沒有問題,但是卻忽略最重要的問題:輸入的值可以很大很大,但是Int的值有限制。 最終在網絡上尋找的代碼
新學習知識點:BigInteger