結果
| 問題 | No.1809 Divide NCK |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2022-01-14 21:32:40 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 55 ms / 2,000 ms |
| コード長 | 896 bytes |
| 記録 | |
| コンパイル時間 | 174 ms |
| コンパイル使用メモリ | 81,920 KB |
| 実行使用メモリ | 58,624 KB |
| 最終ジャッジ日時 | 2024-11-20 08:00:35 |
| 合計ジャッジ時間 | 3,104 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 39 |
ソースコード
import sys
int1 = lambda x: int(x) - 1
# input = lambda: sys.stdin.buffer.readline()
input = lambda: sys.stdin.readline().rstrip()
ii = lambda: int(input())
i1 = lambda: int1(input())
mi = lambda: map(int, input().split())
mi1 = lambda: map(int1, input().split())
li = lambda: list(mi())
li1 = lambda: list(mi1())
lli = lambda n: [li() for _ in range(n)]
INF = float("inf")
mod = int(1e9 + 7)
# mod = 998244353
n, k, m = mi()
v = []
i = 2
while i * i <= m:
cnt = 0
while m % i == 0:
m //= i
cnt += 1
if 0 < cnt:
v.append((i, cnt))
i += 1
if 1 < m:
v.append((m, 1))
ans = INF
for d, c in v:
cnt = 0
p = d
while p <= n:
cnt += n // p
p *= d
p = d
while p <= n - k:
cnt -= (n - k) // p
p *= d
p = d
while p <= k:
cnt -= k // p
p *= d
ans = min(ans, cnt // c)
print(ans)