結果

問題 No.1200 お菓子配り-3
ユーザー lam6er
提出日時 2025-04-15 23:51:25
言語 PyPy3
(7.3.15)
結果
TLE  
実行時間 -
コード長 1,167 bytes
コンパイル時間 322 ms
コンパイル使用メモリ 81,916 KB
実行使用メモリ 58,644 KB
最終ジャッジ日時 2025-04-15 23:53:03
合計ジャッジ時間 6,324 ms
ジャッジサーバーID
(参考情報)
judge2 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
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
        
        D = X * X - 4 * (Y - 1)
        if D < 0:
            print(0)
            continue
        
        sqrt_D = int(math.isqrt(D))
        if sqrt_D * sqrt_D > D:
            sqrt_D -= 1
        
        A_low = (X - sqrt_D) / 2
        A_high = (X + sqrt_D) / 2
        
        A_start = max(2, math.ceil(A_low))
        A_end = math.floor(A_high)
        
        for A in range(A_start, A_end + 1):
            if A * X <= Y:
                continue
            numerator = A * X - Y
            denominator = A * A - 1
            if denominator == 0:
                continue
            if numerator % denominator != 0:
                continue
            B = numerator // denominator
            if B < 1:
                continue
            C = X - A * B
            if C < 1:
                continue
            count += 1
        
        print(count)

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