teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

判明した仕様に基づいて修正

2020/12/25 11:23

投稿

Daregada
Daregada

スコア11990

answer CHANGED
@@ -2,17 +2,25 @@
2
2
 
3
3
  - 入力した数値の桁を逆にするのではなく、**文字列を逆順に並べる**と考えれば、`StringBuilder.reverse`が使える
4
4
  - 回分数の判定も、数値を文字列にして、それを逆順に並べた文字列と一致するかどうか、で行なえる
5
+ - 回分数でなかったら、Nに足した結果を設定し、新たなMを計算する
5
6
 
6
7
  ```Java
7
8
  public static void main(String[] args) throws Exception {
8
9
  var br = new BufferedReader(new InputStreamReader(System.in));
9
10
  var N = Integer.parseInt(br.readLine());
11
+ while (true) {
10
- var M = Integer.parseInt(new StringBuilder(String.valueOf(N)).reverse().toString());
12
+ var M = Integer.parseInt(new StringBuilder(String.valueOf(N)).reverse().toString());
11
- System.out.printf("N=%d\nM=%d\n", N, M);
13
+ System.out.printf("N=%d\nM=%d\n", N, M);
12
14
 
13
- var A = N + M;
15
+ var A = N + M;
14
- System.out.printf("N + M = %d\n", A);
16
+ System.out.printf("N + M = %d\n", A);
15
- var B = Integer.parseInt(new StringBuilder(String.valueOf(A)).reverse().toString());
17
+ var B = Integer.parseInt(new StringBuilder(String.valueOf(A)).reverse().toString());
18
+ if (A == B) {
19
+ break;
20
+ }
16
- System.out.println(A == B ? "OK" : "NG");
21
+ System.out.println("NG");
22
+ N = A;
23
+ }
24
+ System.out.println("OK");
17
25
  }
18
26
  ```