結果
| 問題 |
No.2207 pCr検査
|
| コンテスト | |
| ユーザー |
dachengz
|
| 提出日時 | 2023-02-06 12:46:15 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 1,254 bytes |
| コンパイル時間 | 1,427 ms |
| コンパイル使用メモリ | 81,920 KB |
| 実行使用メモリ | 172,320 KB |
| 最終ジャッジ日時 | 2024-07-04 17:43:20 |
| 合計ジャッジ時間 | 14,763 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 RE * 1 |
| other | AC * 13 RE * 17 |
ソースコード
from math import log, lgamma
def deg(n, p):
ret = 0
n //= p
while n:
ret += n
n //= p
return ret
def isqrt(n):
if n <= 0:
return 0
x = int((n ** 0.5) * (1 + 1e-14))
while True:
y = (x + n // x) // 2
if y >= x:
return x
x = y
k = int(input())
pe = []
for _ in range(k):
pe.append([int(x) for x in input().split()])
P = pe[-1][0]
P1 = P + 1
needlog = 0.0
for p, e in pe:
if e > deg(P, p):
print(-1, -1)
raise ValueError
needlog += log(p) * e
lgP = lgamma(P1)
lo1, hi1 = 1, P // 2
if lgP - lgamma(hi1) - lgamma(P1 - hi1) - needlog < -1e-6:
print(-1, -1)
raise ValueError
while hi1 - lo1 > 1:
md = lo1 + (hi1 - lo1) // 2
lgcomb = lgP - lgamma(md + 1) - lgamma(P1 - md)
if lgcomb - needlog < -1e-6:
lo1 = md
else:
hi1 = md
lo2, hi2 = 1, P // 2
while hi2 - lo2 > 1:
md = lo2 + (hi2 - lo2) // 2
lgcomb = lgP - lgamma(md + 1) - lgamma(P1 - md)
if lgcomb - needlog > 1e-6:
hi2 = md
else:
lo2 = md
for r in range(lo1, hi2 + 1):
if all(deg(P, p) - deg(r, p) - deg(P - r, p) == e for p, e in pe):
print(P, r)
raise ValueError
else:
print(-1, -1)
dachengz