結果
問題 |
No.3301 Make Right Triangle
|
ユーザー |
![]() |
提出日時 | 2025-10-05 16:04:10 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
TLE
|
実行時間 | - |
コード長 | 841 bytes |
コンパイル時間 | 1,900 ms |
コンパイル使用メモリ | 197,992 KB |
実行使用メモリ | 10,784 KB |
最終ジャッジ日時 | 2025-10-05 16:04:42 |
合計ジャッジ時間 | 6,491 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | -- * 1 |
other | AC * 1 TLE * 1 -- * 7 |
ソースコード
#include <bits/stdc++.h> using namespace std; using lint = long long; template<typename T> vector<pair<T, int>> factorize(T n) { vector<pair<T, int>> res; for (T i = 2; i*i <= n; i++) { if (n%i == 0) { int cnt = 0; while (n%i == 0) cnt++, n/=i; res.emplace_back(make_pair(i, cnt)); } } if (n != 1) res.emplace_back(make_pair(n, 1)); return res; } void solve(lint n) { vector<pair<lint, int>> vec = factorize(n); if (vec.size() == 1 && vec[0].first == 2) { cout << 3LL*(n/4) << " " << 4LL*(n/4) << " " << 5LL*(n/4) << endl; } else { lint p = vec[0].first; if (p == 2) p = vec[1].first; cout << (p*p/2)*(n/p) << " " << p*(n/p) << " " << (p*p/2+1)*(n/p) << endl; } } int main() { int t; cin >> t; for (int i = 0; i < t; i++) { lint l; cin >> l; solve(l); } }