結果
問題 | No.811 約数の個数の最大化 |
ユーザー |
![]() |
提出日時 | 2019-04-12 21:56:51 |
言語 | C++11 (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 33 ms / 2,000 ms |
コード長 | 762 bytes |
コンパイル時間 | 1,631 ms |
コンパイル使用メモリ | 169,004 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-09-14 18:28:11 |
合計ジャッジ時間 | 2,062 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 12 |
ソースコード
#include <bits/stdc++.h>using namespace std;int main(){int n,k;cin >> n >> k;vector<int> p;map<int,int> num;int tmp = n;for(int i = 2;i*i <= n;i++){if(tmp%i == 0){p.push_back(i);while(tmp%i==0){num[i]++;tmp /= i;}}}int ret = 0;int mxcnt = 0;for(int i = 2;i < n;i++){tmp = i;int cnt = 0;for(int j = 0;j < p.size();j++){for(int c = 0;c < num[p[j]];c++){if(tmp%p[j]==0){cnt++;tmp /= p[j];}else{break;}}}if(cnt < k)continue;cnt = 0;for(int j = 2;j*j <= i;j++){if(i % j == 0){if(j*j == i)cnt++;else cnt += 2;}}if(mxcnt < cnt){mxcnt = cnt;ret = i;}}cout << ret << endl;}