結果

問題 No.2183 LCA on Rational Tree
ユーザー shobonvipshobonvip
提出日時 2023-01-07 20:18:42
言語 PyPy3
(7.3.15)
結果
TLE  
実行時間 -
コード長 973 bytes
コンパイル時間 264 ms
コンパイル使用メモリ 82,432 KB
実行使用メモリ 79,436 KB
最終ジャッジ日時 2024-05-08 21:14:43
合計ジャッジ時間 8,379 ms
ジャッジサーバーID
(参考情報)
judge4 / judge3
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 42 ms
58,112 KB
testcase_01 AC 1,619 ms
78,352 KB
testcase_02 TLE -
testcase_03 AC 1,066 ms
78,672 KB
testcase_04 AC 395 ms
79,436 KB
testcase_05 AC 1,720 ms
79,156 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

from math import gcd
# plist の実装 遅めだった!(でもあまり変わらない気もするが)

def plist(m):
	pf = []
	for i in range(2,int(m**0.5)+1):
		flag = False
		while m%i == 0:
			flag = True
			m //= i
		if flag: pf.append(i)
	if m>1 : pf.append(m)
	return pf

def gogo(p:int, q:int, lst:list):
	pl = plist(q-p)
	while q-p > 1:
		x = 10 ** 18
		for i in pl:
			if (q-p)%i == 0:
				x = min(x, i-(p%i))
		g = gcd(p+x, q+x)
		lst.append((q-p, p, p+x))
		p, q = (p+x)//g, (q+x)//g
	lst.append((1, p, 9 * 10 ** 18))

Q = int(input())
for _ in range(Q):
	lst1 = []
	lst2 = []
	p1,q1,p2,q2 = map(int,input().split())
	gogo(p1,q1,lst1)
	gogo(p2,q2,lst2)
	g_begin = dict()
	g_end = dict()
	for i, st, ed in lst1:
		g_begin[i] = st
		g_end[i] = ed
	ans1 = 0
	ans2 = 0
	for i, st, ed in lst2:
		if i in g_begin.keys():
			if max(0, min(ed, g_end[i]) - max(st, g_begin[i])) > 0:
				ans1 = max(st, g_begin[i])
				ans2 = i + ans1
				break
	print(ans1, ans2)
0