提出 #21604393


ソースコード 拡げる

def inv_gcd(a,b):
    a=a%b
    if a==0:
        return (b,0)
    s=b;t=a
    m0=0;m1=1
    while(t):
        u=s//t
        s-=t*u
        m0-=m1*u
        s,t=t,s
        m0,m1=m1,m0
    if m0<0:
        m0+=b//s
    return (s,m0)
def inv_mod(x,m):
    assert 1<=m
    z=inv_gcd(x,m)
    assert z[0]==1
    return z[1]
def crt(r,m):
    assert len(r)==len(m)
    n=len(r)
    r0=0;m0=1
    for i in range(n):
        assert 1<=m[i]
        r1=r[i]%m[i]
        m1=m[i]
        if m0<m1:
            r0,r1=r1,r0
            m0,m1=m1,m0
        if (m0%m1==0):
            if (r0%m1!=r1):
                return (0,0)
            continue
        g,im=inv_gcd(m0,m1)
        u1=m1//g
        if ((r1-r0)%g):
            return (0,0)
        x=(r1-r0)//g % u1*im%u1
        r0+=x*m0
        m0*=u1
        if r0<0:
            r0+=m0
    return (r0,m0)

def floor_sum(n,m,a,b):
    ans=0
    if a>=m:
        ans+=(n-1)*n*(a//m)//2
        a%=m
    if b>=m:
        ans+=n*(b//m)
        b%=m
    y_max=(a*n+b)//m
    x_max=(y_max*m-b)
    if y_max==0:
        return ans
    ans+=(n-(x_max+a-1)//a)*y_max
    ans+=floor_sum(y_max,a,m,(a-x_max%a)%a)
    return ans

T=int(input())
for _ in range(T):
    X,Y,P,Q = map(int, input().split())
    ans = 10**30
    for y in range(Y):
        for q in range(Q):
            C = [2*(X+Y),P+Q]#これで割ったら
            R = [X+y,P+q]#この余りになる対のリスト
            r,m = crt(R,C)
            if m!=0:
                ans = min(ans,r)
    if ans==10**30:
        print('infinity')
    else:
        print(ans)

提出情報

提出日時
問題 E - Oversleeping
ユーザ H20
言語 PyPy3 (7.3.0)
得点 500
コード長 1651 Byte
結果 AC
実行時間 470 ms
メモリ 74820 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 500 / 500
結果
AC × 1
AC × 14
セット名 テストケース
Sample 01_sample.txt
All 01_sample.txt, 02_hand.txt, 03_hand.txt, 04_small.txt, 05_small.txt, 06_small.txt, 07_small.txt, 08_small.txt, 09_inf.txt, 10_inf.txt, 11_inf.txt, 12_large.txt, 13_large.txt, 14_large.txt
ケース名 結果 実行時間 メモリ
01_sample.txt AC 63 ms 62092 KiB
02_hand.txt AC 54 ms 62256 KiB
03_hand.txt AC 53 ms 62288 KiB
04_small.txt AC 55 ms 62468 KiB
05_small.txt AC 55 ms 62608 KiB
06_small.txt AC 54 ms 62568 KiB
07_small.txt AC 58 ms 62504 KiB
08_small.txt AC 51 ms 62512 KiB
09_inf.txt AC 55 ms 62440 KiB
10_inf.txt AC 55 ms 62776 KiB
11_inf.txt AC 55 ms 62948 KiB
12_large.txt AC 268 ms 74820 KiB
13_large.txt AC 341 ms 74576 KiB
14_large.txt AC 470 ms 74776 KiB