結果
問題 | No.847 Divisors of Power |
ユーザー |
👑 |
提出日時 | 2022-12-30 23:00:18 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 3 ms / 2,000 ms |
コード長 | 692 bytes |
コンパイル時間 | 805 ms |
コンパイル使用メモリ | 84,288 KB |
最終ジャッジ日時 | 2025-02-09 22:18:38 |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 26 |
ソースコード
#include <iostream> #include <map> #include <vector> using namespace std; vector<pair<long long,long long>> X; int solve(int ind,long long nw, long long m){ if(ind == X.size())return 1; int c = 0; int ans = 0; while(c <= X[ind].second && nw <= m){ ans += solve(ind+1,nw,m); nw *= X[ind].first; c++; } return ans; } int main(){ long long n,k,m;cin>>n>>k>>m; map<long long,long long> A; for(int i = 2; n >= i*i; i++){ int tmp = 0; while(n%i == 0){ tmp++; n/=i; } if(tmp){ A[i] = tmp*k; } } if(n != 1){ A[n] = k; } for(auto x: A){ X.push_back({x.first,x.second}); } cout << solve(0,1,m) << endl; }