結果

問題 No.1200 お菓子配り-3
ユーザー gew1fw
提出日時 2025-06-12 18:54:10
言語 PyPy3
(7.3.15)
結果
TLE  
実行時間 -
コード長 1,802 bytes
コンパイル時間 273 ms
コンパイル使用メモリ 82,348 KB
実行使用メモリ 86,740 KB
最終ジャッジ日時 2025-06-12 18:54:54
合計ジャッジ時間 40,778 ms
ジャッジサーバーID
(参考情報)
judge5 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 25 TLE * 2 -- * 4
権限があれば一括ダウンロードができます

ソースコード

diff #

import math

def get_divisors(n):
    divisors = set()
    if n == 0:
        return divisors
    for i in range(1, int(math.isqrt(n)) + 1):
        if n % i == 0:
            divisors.add(i)
            divisors.add(n // i)
    return divisors

def main():
    import sys
    input = sys.stdin.read().split()
    idx = 0
    S = int(input[idx])
    idx += 1
    for _ in range(S):
        X = int(input[idx])
        Y = int(input[idx + 1])
        idx += 2
        ans = 0
        
        if X == Y:
            if X >= 2:
                ans += X - 1
            divisors_x = get_divisors(X)
            for d in divisors_x:
                if d >= 3:
                    A = d - 1
                    B = X // d
                    C = B
                    if B > 0 and C > 0:
                        if A * B + C == X and A * C + B == X:
                            ans += 1
        else:
            delta = abs(X - Y)
            sum_xy = X + Y
            divisors_delta = get_divisors(delta)
            divisors_sum = get_divisors(sum_xy)
            for d1 in divisors_delta:
                d2 = d1 + 2
                if d2 in divisors_sum:
                    A = d1 + 1
                    numerator = A * X - Y
                    denominator = A * A - 1
                    if denominator == 0:
                        continue
                    if numerator % denominator != 0:
                        continue
                    B = numerator // denominator
                    if B <= 0:
                        continue
                    C = X - A * B
                    if C <= 0:
                        continue
                    if Y != A * C + B:
                        continue
                    ans += 1
        print(ans)

if __name__ == "__main__":
    main()
0