結果
| 問題 | No.148 試験監督(3) |
| コンテスト | |
| ユーザー |
T1610
|
| 提出日時 | 2026-09-23 17:38:45 |
| 言語 | Python3 (3.14.7 + numpy 2.5.2 + scipy 1.18.0 + ACL) |
| 結果 |
TLE
不安定
|
| 実行時間 | - |
| コード長 | 1,020 bytes |
| 記録 | |
| コンパイル時間 | 60 ms |
| コンパイル使用メモリ | 14,976 KB |
| 実行使用メモリ | 10,880 KB |
| 最終ジャッジ日時 | 2026-09-23 17:38:57 |
| 合計ジャッジ時間 | 9,002 ms |
|
ジャッジサーバーID (参考情報) |
judge2_0 / judge4_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | TLE * 1 -- * 11 |
ソースコード
import sys
# 10000桁の入力をパースするために制限を解除
# sys.set_int_max_str_digits(20000)
MOD = 10**9 + 7
def solve():
T = int(input())
for _ in range(T):
C, P = list(map(int, input().split()))
# 足切り①: 物理的に配置不可能
if C < 2 * P - 1:
print(0)
continue
# 足切り②: P! が MOD の倍数になる
if P >= MOD:
print(0)
continue
# N を計算し、MOD で割った余りを出す
N = C - P + 1
n_mod = N % MOD
# 足切り③: 連続するP個の整数の掛け算の中に MOD の倍数が含まれる
if n_mod < P:
print(0)
continue
# 全ての足切りを抜けた場合のみ、O(P) で計算
ans = 1
for i in range(P):
ans = (ans * (n_mod - i)) % MOD
print(ans)
if __name__ == '__main__':
solve()
T1610