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

回答編集履歴

3

コードの説明を追加

2020/06/09 00:34

投稿

kazuma-s
kazuma-s

スコア8222

answer CHANGED
@@ -46,4 +46,9 @@
46
46
  int mindia = r*r + r*r; // ★ 追加
47
47
  for (i = 1; i <= r; i++) { // ★ 100 ではなく r に変更
48
48
  for (j = i + 1; j <= r; j++) { // ★ j = i + 1 に変更
49
- ```
49
+ ```
50
+ **追記2**
51
+ dia は与えられた長方形の対角線(diagonal)の長さの 2乗です。
52
+ newdia は、比較対象の長方形の対角線の長さの 2乗です。
53
+ 複数の newdia のうち dia より小さいものは不要なので continue でループを継続します。
54
+ mindia は、複数の newdia のうち最小のものを保持していて、より小さいものに更新します。

2

コードの改善

2020/06/09 00:33

投稿

kazuma-s
kazuma-s

スコア8222

answer CHANGED
@@ -35,4 +35,15 @@
35
35
  return 0;
36
36
  }
37
37
  ```
38
- どこが分からないのかを質問してください。
38
+ どこが分からないのかを質問してください。
39
+
40
+ **追記**
41
+ 150 まで全部調べるのは無駄ですから、次の r までとします。
42
+ ```C
43
+ #include <math.h> // sqrt
44
+
45
+ int r = sqrt(dia) + 1; // ★ 追加
46
+ int mindia = r*r + r*r; // ★ 追加
47
+ for (i = 1; i <= r; i++) { // ★ 100 ではなく r に変更
48
+ for (j = i + 1; j <= r; j++) { // ★ j = i + 1 に変更
49
+ ```

1

break; 追加

2020/06/08 00:41

投稿

kazuma-s
kazuma-s

スコア8222

answer CHANGED
@@ -21,10 +21,11 @@
21
21
  if (dia>newdia || (dia==newdia && i<=h)) { // ★ i<=h に変更
22
22
  continue;
23
23
  }
24
- if (newdia < mindia) { // else { から変更
24
+ if (newdia < mindia) { // else { から変更
25
25
  H = i;
26
26
  W = j;
27
- mindia = newdia; // break; から変更
27
+ mindia = newdia; // 追加
28
+ break;
28
29
  }
29
30
  }
30
31
  }