結果
| 問題 |
No.152 貯金箱の消失
|
| コンテスト | |
| ユーザー |
maspy
|
| 提出日時 | 2020-02-24 19:14:09 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
AC
|
| 実行時間 | 437 ms / 5,000 ms |
| コード長 | 1,092 bytes |
| コンパイル時間 | 125 ms |
| コンパイル使用メモリ | 12,544 KB |
| 実行使用メモリ | 10,880 KB |
| 最終ジャッジ日時 | 2024-10-12 09:00:14 |
| 合計ジャッジ時間 | 2,679 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 12 |
ソースコード
#!/usr/bin/env python3
# %%
import sys
read = sys.stdin.buffer.read
readline = sys.stdin.buffer.readline
readlines = sys.stdin.buffer.readlines
# %%
# import numpy as np
# from numba import njit
# %%
def gen_pythagorean_triples(bound):
"""generate primitive pythagorean triples.
Parameters
----------
bound : int
upper bound of pelimeter of the triangle
Yields
-------
tuple(int, int, int)
primitive pythagorean triangles
"""
if bound <= 12:
return
yield (3, 4, 5)
stack = [(3, 4, 5)]
while stack:
a, b, c = stack.pop()
for x, y, z in [
(a - 2 * b + 2 * c, 2 * a - b + 2 * c, 2 * a - 2 * b + 3 * c),
(a + 2 * b + 2 * c, 2 * a + b + 2 * c, 2 * a + 2 * b + 3 * c),
(-a + 2 * b + 2 * c, -2 * a + b + 2 * c, -2 * a + 2 * b + 3 * c)]:
if x + y + z < bound:
yield (x, y, z)
stack.append((x, y, z))
# %%
L = int(readline())
# %%
N = L // 4
answer = sum(1 for x in gen_pythagorean_triples(N + 1))
print(answer)
maspy