結果
問題 | No.375 立方体のN等分 (1) |
ユーザー |
![]() |
提出日時 | 2016-06-04 23:13:38 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 36 ms / 5,000 ms |
コード長 | 1,295 bytes |
コンパイル時間 | 942 ms |
コンパイル使用メモリ | 104,952 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-10-11 20:48:41 |
合計ジャッジ時間 | 2,003 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 32 |
ソースコード
#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>//#include<cctype>#include<climits>#include<iostream>#include<string>#include<vector>#include<map>//#include<list>#include<queue>#include<deque>#include<algorithm>//#include<numeric>#include<utility>//#include<memory>#include<functional>#include<cassert>#include<set>#include<stack>#include<random>const int dx[] = {1, 0, -1, 0};const int dy[] = {0, -1, 0, 1};using namespace std;typedef long long ll;typedef unsigned long long ull;typedef vector<int> vi;typedef vector<ll> vll;typedef pair<int, int> pii;int main() {cin.tie(0);ios::sync_with_stdio(false);ll N;cin >> N;vector<ll> div;for (ll i = 2; i*i <= N; i++) {if (N%i == 0) {div.push_back(i);if (i*i != N) div.push_back(N/i);}}sort(div.begin(), div.end());int sz = div.size();ll ans = N-1;for (int i = 0; i < sz; i++) {if (ans+3 <= 2*div[i]) break;for (int j = i; j < sz; j++) {ll tmp = div[i]*div[j];if (N < tmp) break;if (N%tmp) continue;tmp = N/tmp;ans = min(ans, div[i]+div[j]+tmp-3);}}cout << ans << " " << N-1 << endl;return 0;}