結果
問題 | No.2177 Recurring ab |
ユーザー | Shirotsume |
提出日時 | 2023-01-06 21:55:43 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 235 ms / 2,000 ms |
コード長 | 928 bytes |
コンパイル時間 | 165 ms |
コンパイル使用メモリ | 82,304 KB |
実行使用メモリ | 90,368 KB |
最終ジャッジ日時 | 2024-11-30 17:54:35 |
合計ジャッジ時間 | 5,995 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 18 |
ソースコード
import sys from collections import deque, Counter sys.setrecursionlimit(5 * 10 ** 5) from pypyjit import set_param set_param('max_unroll_recursion=-1') input = lambda: sys.stdin.readline().rstrip() ii = lambda: int(input()) mi = lambda: map(int, input().split()) li = lambda: list(mi()) inf = 2 ** 63 - 1 mod = 998244353 from fractions import Fraction n = ii() def check(n, a, b, p): return Fraction(a,p) / (1 - Fraction(1,(p**2))) + Fraction(b,(p**2)) / (1 - Fraction(1,(p**2))) > Fraction(1,n) ans = 0 for a in range(0, 10): for b in range(0, 10): if a == b: continue if not check(n, a, b, max(a, b) + 1): continue ok = max(a, b) + 1 ng = 10 ** 9 + 1 while abs(ok - ng) > 1: mid = (ok + ng) // 2 if check(n, a, b, mid): ok = mid else: ng = mid ans += ok - max(a, b) print(ans)