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

回答編集履歴

1

実例

2015/12/08 16:54

投稿

swordone
swordone

スコア20675

answer CHANGED
@@ -2,4 +2,19 @@
2
2
  3行を10万回ループすれば30万行分です。
3
3
  ループの回数を少なくする工夫を施した結果、見かけの行数が多くなる場合もあります。
4
4
  行数が10行になったとしても、ループ部分が3行でループ回数が100回で済めば
5
- 307行分の実行時間で済みます。
5
+ 307行分の実行時間で済みます。
6
+
7
+ 例えば、こんな問題→[セカンド・イクエイション](https://codeiq.jp/magazine/2015/11/31425/)
8
+
9
+ 愚直に条件を満たすa,b,cを数え上げようとしたらこんなループになります。
10
+ ```java
11
+ for(b = 1; b <= m; b++){
12
+ for(a = 1; a <= b * b / 4; a++){
13
+ for(c = 1; c <= b * b / 4; c++){
14
+ }
15
+ }
16
+ }
17
+ ```
18
+ bのループでm回分、その中でaのループをbの2乗比例分、さらにcのループをbの2乗比例分、
19
+ bはmに比例して大きくなるので、トータルmの5乗に比例したループがかかります。
20
+ このループ回数をなるべく減らすための工夫をこの記事では解説しています。