結果
| 問題 | No.313 π |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-03-03 11:09:18 |
| 言語 | PyPy3 (7.3.17) |
| 結果 |
AC
|
| 実行時間 | 4,167 ms / 5,000 ms |
| コード長 | 1,081 bytes |
| 記録 | |
| コンパイル時間 | 166 ms |
| コンパイル使用メモリ | 85,348 KB |
| 実行使用メモリ | 226,584 KB |
| 最終ジャッジ日時 | 2026-03-03 11:11:57 |
| 合計ジャッジ時間 | 116,464 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 32 |
ソースコード
import sys
from decimal import Decimal, getcontext
sys.set_int_max_str_digits(0)
def pi_chudnovsky(digits):
getcontext().prec = digits + 10
num_iterations = digits // 14 + 1
def binary_splitting(a, b):
if b - a == 1:
if a == 0:
P = Q = 1
else:
P = (6 * a - 5) * (2 * a - 1) * (6 * a - 1)
Q = a**3 * 640320**3 // 24
T = P * (13591409 + 545140134 * a)
if a % 2 == 1:
T = -T
return P, Q, T
else:
mid = (a + b) // 2
P1, Q1, T1 = binary_splitting(a, mid)
P2, Q2, T2 = binary_splitting(mid, b)
P = P1 * P2
Q = Q1 * Q2
T = Q2 * T1 + P1 * T2
return P, Q, T
_, Q, T = binary_splitting(0, num_iterations)
C = 426880 * Decimal(10005).sqrt()
pi = (C * Q) / T
return str(pi)[:digits + 2]
S = input()
pi_str = str(pi_chudnovsky(200_000))
for i in range(len(S)):
if S[i] != pi_str[i]:
print(S[i], pi_str[i])
exit()