回答編集履歴
1
コード追記
test
CHANGED
@@ -29,3 +29,29 @@
|
|
29
29
|
最後に。
|
30
30
|
|
31
31
|
ある`s1`と`s2`が決まった場合、`s1+s2+s3=x`を満たす`s3`は1つに決まるので…
|
32
|
+
|
33
|
+
```Python
|
34
|
+
|
35
|
+
def gen_ans1(n,x):
|
36
|
+
|
37
|
+
for s1 in reversed(range( 3, n+1)):
|
38
|
+
|
39
|
+
for s2 in reversed(range( 2, s1)):
|
40
|
+
|
41
|
+
s3 = x - (s1 + s2)
|
42
|
+
|
43
|
+
if s3 >= 1 and s3 < s2: # 制約条件
|
44
|
+
|
45
|
+
yield (s1,s2,s3)
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
for (n,x) in [(5,9),(100,123),(1000,1234),(10000,12345)]:
|
50
|
+
|
51
|
+
ret = list(gen_ans1(n,x))
|
52
|
+
|
53
|
+
print(n,x,len(ret))
|
54
|
+
|
55
|
+
```
|
56
|
+
|
57
|
+
さすがに`n=10000`くらいだと時間かかりますね…
|