回答編集履歴

1

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

2020/12/25 11:23

投稿

Daregada
Daregada

スコア11990

test CHANGED
@@ -5,6 +5,8 @@
5
5
  - 入力した数値の桁を逆にするのではなく、**文字列を逆順に並べる**と考えれば、`StringBuilder.reverse`が使える
6
6
 
7
7
  - 回分数の判定も、数値を文字列にして、それを逆順に並べた文字列と一致するかどうか、で行なえる
8
+
9
+ - 回分数でなかったら、Nに足した結果を設定し、新たなMを計算する
8
10
 
9
11
 
10
12
 
@@ -16,19 +18,33 @@
16
18
 
17
19
  var N = Integer.parseInt(br.readLine());
18
20
 
19
- var M = Integer.parseInt(new StringBuilder(String.valueOf(N)).reverse().toString());
21
+ while (true) {
20
22
 
23
+ var M = Integer.parseInt(new StringBuilder(String.valueOf(N)).reverse().toString());
24
+
21
- System.out.printf("N=%d\nM=%d\n", N, M);
25
+ System.out.printf("N=%d\nM=%d\n", N, M);
22
26
 
23
27
 
24
28
 
25
- var A = N + M;
29
+ var A = N + M;
26
30
 
27
- System.out.printf("N + M = %d\n", A);
31
+ System.out.printf("N + M = %d\n", A);
28
32
 
29
- var B = Integer.parseInt(new StringBuilder(String.valueOf(A)).reverse().toString());
33
+ var B = Integer.parseInt(new StringBuilder(String.valueOf(A)).reverse().toString());
30
34
 
35
+ if (A == B) {
36
+
37
+ break;
38
+
39
+ }
40
+
31
- System.out.println(A == B ? "OK" : "NG");
41
+ System.out.println("NG");
42
+
43
+ N = A;
44
+
45
+ }
46
+
47
+ System.out.println("OK");
32
48
 
33
49
  }
34
50