結果
| 問題 |
No.2882 Comeback
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2024-08-12 11:34:18 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 251 ms / 2,000 ms |
| コード長 | 871 bytes |
| コンパイル時間 | 442 ms |
| コンパイル使用メモリ | 82,560 KB |
| 実行使用メモリ | 117,004 KB |
| 最終ジャッジ日時 | 2024-08-12 11:34:24 |
| 合計ジャッジ時間 | 5,323 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 30 |
ソースコード
for _ in range(int(input())):
A,B=map(int,input().split())
a,b=[],[]
for i in range(int(B**0.5)+1,0,-1):
a.append((A//(i+1)+1 , A//i , i))
b.append((B//(i+1)+1 , B//i , i))
a.append((A+1,2**60,0))
start=b[0][0]
ans=0
for i in range(1,start):
if A%i>=B%i : ans+=1
l,r=start,start
an,bn=0,0
while True:
if B<l : break
while not a[an][0]<=l<=a[an][1] : an+=1
while not b[bn][0]<=l<=b[bn][1] : bn+=1
r=min(a[an][1],b[bn][1])
p1,q1,p2,q2 = a[an][2],A%l,b[bn][2],B%l
x=-1
if q2<=q1 : ans+=r-l+1
else:
if p1==p2 : pass
else:
if (q2-q1)%(p2-p1)==0 : x=(q2-q1)//(p2-p1)+l
else : x=(q2-q1)//(p2-p1)+l+1
if r<x : pass
else : ans+=r-x+1
l=r+1
print(ans)