結果
問題 |
No.3253 Banned Product
|
ユーザー |
|
提出日時 | 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 |
ソースコード
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))