結果
問題 | No.1006 Share an Integer |
ユーザー | ate |
提出日時 | 2020-07-08 22:21:00 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 91 ms / 2,000 ms |
コード長 | 652 bytes |
コンパイル時間 | 699 ms |
コンパイル使用メモリ | 76,596 KB |
最終ジャッジ日時 | 2025-01-11 17:03:27 |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 19 |
ソースコード
#include<iostream> #include<vector> #include<utility> signed main(){ constexpr int maxn = 2e6; std::vector<int> divnum(maxn+1); for(int i=1;i<=maxn;++i){ divnum[i]++; for(int j=i+i;j<=maxn;j+=i)divnum[j]++; } int n; std::cin>>n; std::vector<std::pair<int,int>> ans_set; int ans_val = 1<<28; for(int i=1;i<n;++i){ int j = n-i; auto f = [&](auto n){return n-divnum[n];}; int tmp = std::abs(f(i)-f(j)); if(ans_val==tmp)ans_set.emplace_back(i,j); if(ans_val>tmp){ ans_set.clear(); ans_set.emplace_back(i,j); ans_val = tmp; } } for(auto [i,j]:ans_set)std::cout<<i<<" "<<j<<std::endl; }