Coding_Gamesメモ_The_River_II
Coding_Gamesメモ_The_River_II
javaの学習にCoding_Games を知り、学習の記録としてメモ。
To debug:
System.err.println( );
を使うとデバックしやすくなる。(エラー出力は評価に影響しない)
内容
数字遊び ある数字が合流ポイントになるか調べる
ルール
ある数字にすべての桁の合計を足した数字を足していく
例
7,(7+7)14
ある数字が他の数字の計算の答えとしてあるかどうか出力
例
29 は合流ポイントになるか
(19+1+9)29,
19 と29 の答えが合流する
インプット
1行目 調べる数字 r1
アウトプット
"YES" or "NO"
使用したクラス
Integer
(static int) = Integer.parseInt(str)
数字を表す文字列str をint に変換する
valueOf との違いはparseInt は基本のデータ型のint を出力し、valueOf はラッパークラスのInteger を出力する
StringBuilder
(String) = StringBuilder.substring(x,y)
文字列の一部をコピーする。
x,yはint型
xがコピー開始位置、yは終了位置、yが指定されていなければ最後まで指定したのと同じ。
考え方
すでに計算した流れをスキップしても足りない
なので大雑把に計算範囲を指定して1度だけ関数を使って計算して答えがr1になるものがあるかどうかで判断する
桁の数字すべてを足すので1度の計算でr1 になる可能性がある範囲はおおよそ
r1 -1 〜 r1 -(r1 の一番大きい桁) -(9(r1の桁数 -1))
になる
r1 = 29
29 -2 -(9(2-1)) = 18
28 〜 18
Coding_Games:https://www.codingame.com/ Integer (Java Platform SE 8) - Oracle Cloud:https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Integer.html StringBuilder (Java Platform SE 8) - Oracle Cloud:https://docs.oracle.com/javase/jp/8/docs/api/java/lang/StringBuilder.html