結果

問題 No.2368 I love a square root of 2
ユーザー shobonvip
提出日時 2023-06-30 02:42:19
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 592 ms / 2,000 ms
コード長 2,562 bytes
コンパイル時間 342 ms
コンパイル使用メモリ 82,048 KB
実行使用メモリ 91,904 KB
最終ジャッジ日時 2024-07-06 16:13:42
合計ジャッジ時間 5,793 ms
ジャッジサーバーID
(参考情報)
judge5 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 20
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

# , a + √2 b = a' + √2 b' ⇒ a = a' AND b = b'
# a + √2 b = 0 a = b = 0 .
# a ≠ 0 , √2 = -a/b . , a = 0 , b = 0 .
# 99999 + √2 99999 , a,b ≦ 300000 調.
# X K , K .
# , K() [] X .
# X .
# K > a + √2 b [ (K-a)² > 2b² AND a ≦ K ] .
# a , b .
# K N , X K .
# X .
# , K ≦ X < K+1 .
# a K ≦ a+√2 b < K+1 b . , [ X - (K) .]
# , , ――使.
# O(√N log N) O(√N log^2 N).
from functools import cmp_to_key
# a0 + a1 √2 < b0 + b1 √2
# a0 >= b0 ,
# a0 - b0 < (b1 - a1) √2
# b1 - a1 < 0 [False]
# , (a0 - b0) ** 2 < (b1 - a1) ** 2 * 2 [True], [False]
# a0 < b0 ,
# b0 - a0 > (a1 - b1) √2
# a1 - b1 < 0 [True]
# , (b0 - a0) ** 2 > (a1 - b1) ** 2 * 2 [True], [False]
def cmp(a, b):
if a == b: return 0
if a[0] >= b[0]:
if b[1] - a[1] < 0: return 1
if (a[0] - b[0]) ** 2 < 2 * (b[1] - a[1]) ** 2: return -1
return 1
else:
if a[1] - b[1] < 0: return 1
if (b[0] - a[0]) ** 2 > 2 * (a[1] - b[1]) ** 2: return -1
return 1
def cntunderk(k):
y = 0
cnt = 0
for x in range(1, k+1):
t = x * x
while True:
y += 1
if 2 * y * y >= t:
y -= 1
break
cnt += y + 1
return cnt
n = int(input())
mx = 300000
#
ub = mx
lb = -1
while ub - lb > 1:
k = (ub + lb) // 2
if cntunderk(k) < n:
lb = k
else:
ub = k
#print(lb)
#
y = 0
s = []
for x in range(lb, -1, -1):
while True:
if 2 * y * y < (lb - x) * (lb - x):
y += 1
continue
break
assert 2 * y * y >= (lb - x) * (lb - x)
if 2 * y * y < (lb + 1 - x) * (lb + 1 - x):
s.append((x, y))
s.sort(key = cmp_to_key(cmp))
n -= cntunderk(lb)
assert n >= 1
assert n <= len(s)
print(*s[n-1])
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0