結果
問題 |
No.375 立方体のN等分 (1)
|
ユーザー |
![]() |
提出日時 | 2016-06-05 00:10:12 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,456 bytes |
コンパイル時間 | 861 ms |
コンパイル使用メモリ | 78,400 KB |
実行使用メモリ | 6,824 KB |
最終ジャッジ日時 | 2024-10-08 13:07:55 |
合計ジャッジ時間 | 1,730 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 5 WA * 27 |
ソースコード
#include <iostream> #include <vector> #include <algorithm> #include <string> #include <queue> #include <stack> #include <complex> #include <functional> using namespace std; using ull = unsigned long long; using ll = long long; bool isPrime(ull num){ if (num <= 1) return false; else if (num == 2) return true; else if (num % 2 == 0) return false; for (int i = 3; i < num / i; i += 2){ if (num%i == 0) return false; } return true; } void PrimeFactorization(const ull number, vector<ull>& result){ result.clear(); ull t = number; if (number == 0){ return; } //2で割れるかチェック if ((t % 2) == 0){ ull n = 0; do{ n++; t /= 2; } while ((t % 2) == 0); for (int i = 0; i < n; i++){ result.push_back(2); } if (t == 1){ return; } } //3以上の奇数で割れるかチェック ull limit = (ull)sqrt((double)t); for (ull i = 3; i <= limit; i += 2){ if ((t % i) == 0){ ull n = 0; do{ n++; t /= i; } while ((t % i) == 0); for (int i = 0; i < n; i++){ result.push_back(i); } if (t == 1){ return; } limit = (ull)sqrt((double)t); } } //残った素数を追加 result.push_back(t); } int main(){ ull N; cin >> N; vector<ull> result; PrimeFactorization(N, result); ull a[3]; a[0] = 1; a[1] = 1; a[2] = 1; for (int i = 0; i < result.size(); i++){ a[i % 3] *= result.at(i); } cout << a[0] + a[1] + a[2] - 3 << " " << N - 1 << endl; return 0; }