回答編集履歴
3
コードの説明を追加
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
コードの改善
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; 追加
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; //
|
53
|
+
mindia = newdia; // ★ 追加
|
54
|
+
|
55
|
+
break;
|
54
56
|
|
55
57
|
}
|
56
58
|
|