結果
| 問題 | No.1809 Divide NCK |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-10-03 12:01:47 |
| 言語 | PyPy3 (7.3.23 + ACL) |
| 結果 |
AC
不安定
|
| 実行時間 | 76 ms / 2,000 ms |
| + 554µs | |
| コード長 | 670 bytes |
| 記録 | |
| コンパイル時間 | 393 ms |
| コンパイル使用メモリ | 82,136 KB |
| 実行使用メモリ | 78,660 KB |
| 最終ジャッジ日時 | 2026-10-03 12:01:55 |
| 合計ジャッジ時間 | 5,646 ms |
|
ジャッジサーバーID (参考情報) |
judge4_0 / judge2_1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 39 |
ソースコード
def v(p,n):
cnt = 0
k = 1
while True:
d = n//pow(p,k)
if d==0:
break
cnt += d
k += 1
return cnt
P = list(range(10**6))
for i in range(2,10**6):
if i*i>10**6:break
for j in range(i*i,10**6,i):
P[j] = P[i]
Q = []
for i in range(2,10**6):
if P[i]==i:
Q.append(i)
N,K,M = map(int,input().split())
C = {}
x = M
for p in Q:
if x%p==0:
cnt = 0
while x%p==0:
x //= p
cnt += 1
C[p] = cnt
if x>1:
C[x] = 1
D = {p:0 for p in C}
for p in C:
D[p] = v(p,N)-v(p,K)-v(p,N-K)
ans = 100
for p in C:
ans = min(ans,D[p]//C[p])
print(ans)