結果
問題 |
No.847 Divisors of Power
|
ユーザー |
![]() |
提出日時 | 2019-07-05 22:19:05 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,518 bytes |
コンパイル時間 | 1,896 ms |
コンパイル使用メモリ | 182,660 KB |
実行使用メモリ | 16,000 KB |
最終ジャッジ日時 | 2024-10-06 22:05:35 |
合計ジャッジ時間 | 3,176 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 25 WA * 1 |
ソースコード
#include "bits/stdc++.h" using namespace std; using ll = long long; using pii = pair<int, int>; using pll = pair<ll, ll>; using vi = vector<int>; using vl = vector<ll>; using vvi = vector<vi>; using vvl = vector<vl>; const int INF = 1 << 28; const ll MOD = 1000000007; template <class T> bool chmax(T &a, const T &b) { return (a < b) ? (a = b, 1) : 0; } template <class T> bool chmin(T &a, const T &b) { return (b < a) ? (a = b, 1) : 0; } template <typename T = int> void primeFactors(T a, map<T, int> &facs) { double sqrtA = sqrt(a); for (int i = 2; i <= sqrtA + 1e-10; ++i) { while (a % i == 0) { facs[i]++; a /= i; } } if (a > sqrtA) facs[a]++; return; } ll fastPow(ll a, ll n) { ll res = 1; while (n > 0) { if (n & 1) res = res * a; a = a * a; n >>= 1; } return res; } int main() { ll n, k, m; cin >> n >> k >> m; map<ll, int> facs; primeFactors<ll>(n, facs); for (auto &p : facs) { p.second *= k; } set<ll> ret; set<ll> temp; ret.emplace(1); for (auto &p : facs) { temp.clear(); for (auto &r : ret) { for (int i = 0; i <= p.second; ++i) { ll next = r * fastPow(p.first, i); if (next <= m) temp.emplace(next); else break; } } ret = temp; } cout << ret.size() << "\n"; return 0; }