回答編集履歴

3

コードの説明を追加

2020/06/09 00:34

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -95,3 +95,13 @@
95
95
  for (j = i + 1; j <= r; j++) { // ★ j = i + 1 に変更
96
96
 
97
97
  ```
98
+
99
+ **追記2**
100
+
101
+ dia は与えられた長方形の対角線(diagonal)の長さの 2乗です。
102
+
103
+ newdia は、比較対象の長方形の対角線の長さの 2乗です。
104
+
105
+ 複数の newdia のうち dia より小さいものは不要なので continue でループを継続します。
106
+
107
+ mindia は、複数の newdia のうち最小のものを保持していて、より小さいものに更新します。

2

コードの改善

2020/06/09 00:33

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -73,3 +73,25 @@
73
73
  ```
74
74
 
75
75
  どこが分からないのかを質問してください。
76
+
77
+
78
+
79
+ **追記**
80
+
81
+ 150 まで全部調べるのは無駄ですから、次の r までとします。
82
+
83
+ ```C
84
+
85
+ #include <math.h> // sqrt
86
+
87
+
88
+
89
+ int r = sqrt(dia) + 1; // ★ 追加
90
+
91
+ int mindia = r*r + r*r; // ★ 追加
92
+
93
+ for (i = 1; i <= r; i++) { // ★ 100 ではなく r に変更
94
+
95
+ for (j = i + 1; j <= r; j++) { // ★ j = i + 1 に変更
96
+
97
+ ```

1

break; 追加

2020/06/08 00:41

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -44,13 +44,15 @@
44
44
 
45
45
  }
46
46
 
47
- if (newdia < mindia) { // else { から変更
47
+ if (newdia < mindia) { // else { から変更
48
48
 
49
49
  H = i;
50
50
 
51
51
  W = j;
52
52
 
53
- mindia = newdia; // break; から変更
53
+ mindia = newdia; // 追加
54
+
55
+ break;
54
56
 
55
57
  }
56
58