結果

問題 No.1200 お菓子配り-3
ユーザー lam6er
提出日時 2025-04-16 16:05:25
言語 PyPy3
(7.3.15)
結果
TLE  
実行時間 -
コード長 1,246 bytes
コンパイル時間 427 ms
コンパイル使用メモリ 81,788 KB
実行使用メモリ 78,772 KB
最終ジャッジ日時 2025-04-16 16:13:20
合計ジャッジ時間 35,994 ms
ジャッジサーバーID
(参考情報)
judge2 / judge5
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 28 WA * 2 TLE * 1
権限があれば一括ダウンロードができます

ソースコード

diff #

import math

def get_divisors(s):
    if s == 0:
        return []
    divisors = set()
    for i in range(1, int(math.isqrt(s)) + 1):
        if s % i == 0:
            divisors.add(i)
            divisors.add(s // i)
    sorted_divisors = sorted(divisors)
    return [d for d in sorted_divisors if d >= 3]

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
        S_total = X + Y
        divisors = get_divisors(S_total)
        count = 0
        for d in divisors:
            A = d - 1
            denomB = (d - 2) * d
            # Check B
            numB = A * X - Y
            if numB <= 0:
                continue
            if numB % denomB != 0:
                continue
            B = numB // denomB
            if B < 1:
                continue
            # Check C
            numC = A * Y - X
            if numC <= 0:
                continue
            if numC % denomB != 0:
                continue
            C = numC // denomB
            if C < 1:
                continue
            count += 1
        print(count)

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