回答編集履歴
3
サンプル追加
test
CHANGED
@@ -42,7 +42,9 @@
|
|
42
42
|
|
43
43
|
とりあえず 質問での3重ループの一番内側のループは、``k<i+j`` が成り立つ ``k`` をカウントしているだけですので、この部分をループではなく計算で求めるようにするとループの回数を大幅に少なくすることができます。
|
44
44
|
|
45
|
+
|
46
|
+
|
45
|
-
```
|
47
|
+
```Python
|
46
48
|
|
47
49
|
n = 1000
|
48
50
|
|
@@ -60,6 +62,12 @@
|
|
60
62
|
|
61
63
|
|
62
64
|
|
65
|
+
内包表記だとこんなかんじ
|
63
66
|
|
67
|
+
```Python
|
64
68
|
|
69
|
+
n = 1000
|
65
70
|
|
71
|
+
ret = sum([min(i,n-j+1) for i in range(1,n+1) for j in range(i,n+1) ])
|
72
|
+
|
73
|
+
```
|
2
文言の修正
test
CHANGED
@@ -40,7 +40,7 @@
|
|
40
40
|
|
41
41
|
|
42
42
|
|
43
|
-
とりあえず 質問での3重ループの一番内側のループは、``i+j
|
43
|
+
とりあえず 質問での3重ループの一番内側のループは、``k<i+j`` が成り立つ ``k`` をカウントしているだけですので、この部分をループではなく計算で求めるようにするとループの回数を大幅に少なくすることができます。
|
44
44
|
|
45
45
|
```
|
46
46
|
|
1
改善案の提示
test
CHANGED
@@ -27,3 +27,39 @@
|
|
27
27
|
|
28
28
|
|
29
29
|
に置き換えることができます。
|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
---
|
34
|
+
|
35
|
+
|
36
|
+
|
37
|
+
【追記】
|
38
|
+
|
39
|
+
上記でパフォーマンスがでないようですので・・改善案を書いておきます。
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
とりあえず 質問での3重ループの一番内側のループは、``i+j<k`` が成り立つ ``k`` をカウントしているだけですので、、この部分のループを廃止して、計算で求めるようにするとループの回数を大幅に少なくすることができます。
|
44
|
+
|
45
|
+
```
|
46
|
+
|
47
|
+
n = 1000
|
48
|
+
|
49
|
+
count = 0
|
50
|
+
|
51
|
+
for i in range(1,n+1):
|
52
|
+
|
53
|
+
for j in range(i,n+1):
|
54
|
+
|
55
|
+
count += min(i,n-j+1)
|
56
|
+
|
57
|
+
print(count)
|
58
|
+
|
59
|
+
```
|
60
|
+
|
61
|
+
|
62
|
+
|
63
|
+
|
64
|
+
|
65
|
+
|