結果
| 問題 |
No.2358 xy+yz+zx=N
|
| コンテスト | |
| ユーザー |
norioc
|
| 提出日時 | 2025-03-09 22:04:21 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 219 ms / 2,000 ms |
| コード長 | 950 bytes |
| コンパイル時間 | 729 ms |
| コンパイル使用メモリ | 82,380 KB |
| 実行使用メモリ | 82,988 KB |
| 最終ジャッジ日時 | 2025-03-09 22:04:25 |
| 合計ジャッジ時間 | 3,192 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 10 |
ソースコード
from itertools import count, permutations
def distinct_permutations(a: list): # -> Generator[list, None, None]:
n = len(a)
xs = a.copy()
while 1:
yield xs
p = -1
for i in range(n-1):
if xs[i] < xs[i+1]:
p = i
if p == -1: return
q = -1
for i in range(p+1, n):
if xs[p] < xs[i]:
q = i
xs[p], xs[q] = xs[q], xs[p]
xs[p+1:] = reversed(xs[p+1:])
N = int(input())
s = set()
if N == 1:
s.add((0, 1, 1))
for x in range(N+1):
if 3*x*x > N: break
for y in range(x, N+1):
if x == y == 0: continue
if x*x + y*y + y*x > N: break
if (N - x*y) % (x + y) != 0: continue
z = (N - x*y) // (x + y)
if y <= z:
s.add((x, y, z))
ans = []
for e in s:
for xs in distinct_permutations(list(e)):
ans.append(xs[:])
print(len(ans))
for a in ans:
print(*a)
norioc