結果

問題 No.1200 お菓子配り-3
ユーザー qumazaki
提出日時 2020-08-30 01:33:44
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 3,183 ms / 4,000 ms
コード長 1,061 bytes
コンパイル時間 209 ms
コンパイル使用メモリ 82,152 KB
実行使用メモリ 78,104 KB
最終ジャッジ日時 2024-11-20 23:08:04
合計ジャッジ時間 22,667 ms
ジャッジサーバーID
(参考情報)
judge3 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 31
権限があれば一括ダウンロードができます

ソースコード

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

import sys
read = sys.stdin.buffer.read
readline = sys.stdin.buffer.readline
readlines = sys.stdin.buffer.readlines
s = int(readline())
data = list(map(int,read().split()))
def make_divisors(n):
divisors = []
for i in range(1,int(n**0.5)+1):
if(n%i == 0):
divisors.append(i)
if(i!= n//i):
divisors.append(n//i)
return divisors
ans = []
it = iter(data)
for x,y in zip(it,it):
if(x==1)|(y==1):
ans.append(0)
continue
comb = 0
dif = abs(x-y)
if(dif==0):
comb=x-1
divisors = set(make_divisors(x))
comb += len(divisors)-1
if(2 in divisors):
comb -= 1
ans.append(comb)
continue
divisors = make_divisors(dif)
for di in divisors:
xy_sum = x+y
if(xy_sum%(di+2)!=0):
continue
bc_dif = dif//di
bc_sum = xy_sum//(di+2)
if(bc_sum<=bc_dif)|((bc_sum-bc_dif)%2==1):
continue
comb += 1
ans.append(comb)
print('\n'.join(map(str,ans)))
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0