結果
問題 |
No.473 和と積の和
|
ユーザー |
|
提出日時 | 2016-12-22 00:33:28 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 347 ms / 3,000 ms |
コード長 | 841 bytes |
コンパイル時間 | 416 ms |
コンパイル使用メモリ | 82,292 KB |
実行使用メモリ | 77,208 KB |
最終ジャッジ日時 | 2024-12-16 03:43:13 |
合計ジャッジ時間 | 5,381 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 43 |
ソースコード
def divisors(n): ret = [] d = 2 while d * d <= n: if n % d == 0: ret.append(int(d)) if d * d != n: ret.append(int(n / d)) d += 1 ret.append(n) ret.sort() return ret N, X = map(int, input().split()) D = divisors(X + 1) def dec(n, m, k): # print(n, m, k) if m >= len(D): return 0 if k == 0: if n == 1: return 1 else: return 0 if k == 1: if n >= D[m]: return 1 else: return 0 if pow(n, 1.0 / k) + 0.00000001 < D[m]: return 0 ret = 0 d = int(m) while D[d] * D[d] <= n and d < len(D): if n % D[d] == 0 : nn = n cnt = 1 while nn % D[d] == 0 and k >= cnt: nn /= D[d] ret += dec(nn, d + 1, k - cnt) cnt += 1 d += 1 return ret print(dec(X + 1, 0, N))