結果

問題 No.1200 お菓子配り-3
ユーザー gew1fw
提出日時 2025-06-12 14:28:01
言語 PyPy3
(7.3.15)
結果
TLE  
実行時間 -
コード長 1,170 bytes
コンパイル時間 322 ms
コンパイル使用メモリ 82,684 KB
実行使用メモリ 57,856 KB
最終ジャッジ日時 2025-06-12 14:28:17
合計ジャッジ時間 5,848 ms
ジャッジサーバーID
(参考情報)
judge3 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other TLE * 1 -- * 30
権限があれば一括ダウンロードができます

ソースコード

diff #

import math
import sys

def main():
    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
        
        count = 0
        
        # Check if X^2 >=4(Y-1)
        D = X * X - 4 * (Y - 1)
        if D < 0:
            print(0)
            continue
        
        sqrtD = math.isqrt(D)
        if (sqrtD * sqrtD) != D:
            max_A = (X + sqrtD) // 2
        else:
            max_A = (X + sqrtD) // 2
        
        # Iterate A from 2 to max_A
        for A in range(2, max_A + 1):
            numerator = A * X - Y
            if numerator <= 0:
                continue
            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 A * C + B == Y:
                count += 1
        
        print(count)
    
if __name__ == '__main__':
    main()
0