結果
問題 | No.1063 ルートの計算 / Sqrt Calculation |
ユーザー | 🍮かんプリン |
提出日時 | 2020-05-29 21:24:42 |
言語 | C++11 (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 2 ms / 2,000 ms |
コード長 | 958 bytes |
コンパイル時間 | 2,279 ms |
コンパイル使用メモリ | 163,016 KB |
実行使用メモリ | 6,820 KB |
最終ジャッジ日時 | 2024-11-06 02:22:13 |
合計ジャッジ時間 | 2,968 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 14 |
ソースコード
/** * @FileName b.cpp * @Author kanpurin * @Created 2020.05.29 21:24:37 **/ #include "bits/stdc++.h" using namespace std; typedef long long ll; // 素因数分解 O(√n)以下 // (素因数,個数) template < typename T > vector< pair< T, int > > prime_factorization(T n) { vector< pair< T, int > > res; for (T i = 2; i * i <= n; i++) { int cnt = 0; while (n % i == 0) { n /= i; cnt++; } if (cnt > 0) res.push_back({i, cnt}); } if (n > 1) res.push_back({n, 1}); return res; } int main() { int n; cin >> n; if (n == 1) { cout << 1 << " " << 1 << endl; return 0; } auto v = prime_factorization(n); int ans2 = 1; int ans1 = 1; for (auto p : v) { if (p.second & 1) { ans2 *= p.first; } ans1 *= (int)pow(p.first,p.second / 2); } cout << ans1 << " " << ans2 << endl; return 0; }