結果
| 問題 | No.1383 Numbers of Product |
| コンテスト | |
| ユーザー |
Kude
|
| 提出日時 | 2021-02-11 16:24:34 |
| 言語 | PyPy3 (8.0.0 + ACL) |
| 結果 |
AC
不安定
|
| 実行時間 | 536 ms / 2,000 ms |
| + 679µs | |
| コード長 | 875 bytes |
| 記録 | |
| コンパイル時間 | 61 ms |
| コンパイル使用メモリ | 83,232 KB |
| 実行使用メモリ | 185,788 KB |
| 最終ジャッジ日時 | 2026-09-28 09:24:33 |
| 合計ジャッジ時間 | 17,234 ms |
|
ジャッジサーバーID (参考情報) |
judge1_1 / judge4_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 51 |
ソースコード
from collections import Counter
n, k, m = map(int, input().split())
c = Counter()
for s in range(1, 10 ** 6 + 1):
now = 1
for i in range(100):
now *= s + i * k
if now > n:
break
if i >= 2:
c[now] += 1
def g(x):
# a(a+k) = x
if 1 + k > x:
return False
l = 1
r = 10 ** 9
while r - l > 1:
c = (r + l) // 2
if c * (c + k) <= x:
l = c
else:
r = c
return l * (l + k) == x
ans = 0
for x, cnt in c.items():
if g(x):
if m == 1:
ans -= 1
elif cnt + 1 == m:
ans += 1
elif cnt == m:
ans += 1
if m == 1 and 1 + k <= n:
l = 1
r = 10 ** 9
while r - l > 1:
c = (r + l) // 2
if c * (c + k) <= n:
l = c
else:
r = c
ans += l
print(ans)
Kude