AOJ 0002 Digit Number
方針
初めは「a+bを10で割ったときの商が、10より小さくなるまで割り続ける」という方針でした。
- 例:のとき
- (1回目の割り算。商が13なので、10より大きい。さらに割る)
- (2回目の割り算。商が1なので、10より小さい。おしまい)
- 割った回数+1が桁数なのでの3桁が答え
- 例:のとき
- (1回目の割り算。商が123なので、10より大きい。さらに割る)
- (2回目の割り算。商が12なので、10より小さい。さらに割る)
- (3回目の割り算。商が1なので、10より小さい。おしまい)
- 割った回数+1が桁数なのでの4桁が答え
,j;;;;;j,. ---一、 ` ―--‐、_ l;;;;;; {;;;;;;ゝ T辷iフ i f'辷jァ !i;;;;; 割っていけばいいんだろ・・・? ヾ;;;ハ ノ .::!lリ;;r゛ `Z;i 〈.,_..,. ノ;;;;;;;;> そんなふうに考えていた時期が ,;ぇハ、 、_,.ー-、_',. ,f゛: Y;;f. 俺にもありました ~''戈ヽ `二´ r'´:::. `!
方針2
整数から文字列に変換して、その文字列長を計算する。
文字列長を計算するメソッドはStringクラスのlengthです。こいつを使えばいいです。
では、intからStringへの変換はどのようにして行うのでしょうか?
答えはこいつです。IntegerクラスのtoStringメソッドです。
例:
int res = Integer.toString(1000+10).length(); System.out.println(res);
これを実行すると1010の桁数である4が出力されます。
ソース
import java.util.*; public class Main { static Scanner sc = new Scanner(System.in); static int a, b; public static void main(String[] args) { while(read()){ slove(); } } static boolean read(){ if(!sc.hasNext())return false; a = sc.nextInt(); b = sc.nextInt(); return true; } static void slove(){ int ans = Integer.toString(a+b).length(); System.out.println(ans); } }