結果
問題 | No.1383 Numbers of Product |
ユーザー |
|
提出日時 | 2021-02-07 22:03:47 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 592 ms / 2,000 ms |
コード長 | 2,279 bytes |
コンパイル時間 | 884 ms |
コンパイル使用メモリ | 93,768 KB |
実行使用メモリ | 84,480 KB |
最終ジャッジ日時 | 2024-11-22 23:19:58 |
合計ジャッジ時間 | 16,961 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 51 |
ソースコード
#include<iostream>#include<string>#include<iomanip>#include<cmath>#include<vector>#include<algorithm>#include<utility>#include<map>using namespace std;// #define int long long#define int __int128#define endl "\n"constexpr long long INF = (long long)2e9;constexpr long long MOD = 1'000'000'007;struct fast_io {fast_io(){std::cin.tie(nullptr);std::ios::sync_with_stdio(false);};} fio;int cal(int num){int res = 0;for(int i = 1; i <= num; i++){if(num % i == 0) res++;}return res;}int input(){long long in;cin>>in;return in;}int check(int P, int K){int l = 0, r = INF, m = 0;while(l + 1 < r){m = (l + r) / 2;if(m * (m + K) == P) return true;else if(m * (m + K) < P) l = m;else r = m;}return false;}signed main(){cout<<fixed<<setprecision(10);int N, K, M;int con = 0;map<int,int> mp;N = input();K = input();M = input();for(int A = 1; A * (A + K) * (A + 2 * K) <= N; A++){int pro = A * (A + K) * (A + 2 * K);for(int B = 2; pro <= N; B++){mp[pro]++;// cout<<"A = "<<(long long)A<<" B = "<<(long long)B<<" pro = "<<(long long)pro<<endl;pro *= A + K * (B + 1);}}if(M == 1) {int l = 0, r = INF, m;while(l + 1 < r){m = (l + r) / 2;if(m * (m + K) <= N) {l = m;} else {r = m;}}con = l;// cout<<"con = "<<(long long)con<<endl;for(pair<int,int> p : mp){// if((p.first) * (p.first + K) <= N) {if(check(p.first, K)) {con--;} else if(p.second == 1){con++;}}} else {for(pair<int,int> p : mp){int temp = p.second;// if((p.first) * (p.first + K) <= N) {if(check(p.first, K)) {temp++;}if(temp == M) con++;}}cout<<(long long)con<<endl;return 0;}