結果

問題 No.3253 Banned Product
ユーザー nhtloc
提出日時 2025-09-19 14:01:40
言語 Python3
(3.13.1 + numpy 2.2.1 + scipy 1.14.1)
結果
AC  
実行時間 160 ms / 2,000 ms
コード長 1,068 bytes
コンパイル時間 308 ms
コンパイル使用メモリ 12,416 KB
実行使用メモリ 10,368 KB
最終ジャッジ日時 2025-09-19 14:01:42
合計ジャッジ時間 1,784 ms
ジャッジサーバーID
(参考情報)
judge4 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 9
権限があれば一括ダウンロードができます

ソースコード

diff #

import sys
import math

def is_bad(x: int, K: int) -> bool:
    # Trả về True nếu tồn tại a,b với 1<=a,b<=K và a*b=x (x "xấu"); ngược lại False (x "tốt")
    if x <= K:
        return True  # x = 1 * x, cả hai đều <= K

    low = (x + K - 1) // K  # ceil(x / K)
    if low > K:
        return False  # không có ước d nào trong [low..K] => không thể có a,b<=K

    r = math.isqrt(x)
    if low > r:
        return False

    for d in range(low, r + 1):
        if x % d == 0:
            v = x // d
            if d <= K and v <= K:
                return True
    return False

def solve_case(N: int, K: int) -> int:
    if K >= N:
        return -1
    if N > K * K:
        return N
    for x in range(N, K, -1):
        if not is_bad(x, K):
            return x
    return -1

data = sys.stdin.read().strip().split()
if data:
    it = iter(data)
    T = int(next(it))
    out = []
    for _ in range(T):
        N = int(next(it)); K = int(next(it))
        out.append(str(solve_case(N, K)))
    sys.stdout.write("\n".join(out))
0