結果
問題 |
No.847 Divisors of Power
|
ユーザー |
![]() |
提出日時 | 2019-07-05 22:22:20 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,390 bytes |
コンパイル時間 | 1,782 ms |
コンパイル使用メモリ | 183,532 KB |
実行使用メモリ | 16,000 KB |
最終ジャッジ日時 | 2024-10-06 22:13:57 |
合計ジャッジ時間 | 2,955 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
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; } 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) { temp.emplace(r); ll nextr = r; for (int i = 1; i <= p.second; ++i) { nextr *= p.first; if (nextr <= m) temp.emplace(nextr); else break; } } ret = temp; } cout << ret.size() << "\n"; return 0; }