結果
問題 | No.2358 xy+yz+zx=N |
ユーザー |
|
提出日時 | 2023-06-23 21:56:33 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 116 ms / 2,000 ms |
コード長 | 1,877 bytes |
コンパイル時間 | 1,816 ms |
コンパイル使用メモリ | 177,608 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-07-01 17:30:55 |
合計ジャッジ時間 | 3,083 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 10 |
ソースコード
#include <bits/stdc++.h> using namespace std; #define rep(i, n) for (ll i = 0; i < (ll)(n); i++) #define rep2(i, s, n) for (ll i = (s); i <= (ll)(n); i++) typedef long long ll; typedef vector<int> vi; typedef vector<vector<int>> vvi; typedef vector<vector<vector<int>>> vvvi; typedef vector<string> vs; typedef vector<vector<string>> vvs; typedef vector<vector<vector<string>>> vvvs; typedef vector<char> vc; typedef vector<vector<char>> vvc; typedef vector<vector<vector<char>>> vvvc; typedef vector<ll> vll; typedef vector<vector<ll>> vvll; typedef vector<vector<vector<ll>>> vvvll; typedef vector<double> vd; typedef vector<vector<double>> vvd; typedef vector<vector<vector<double>>> vvvd; #define yes(ans) if(ans)cout << "yes"<< endl; else cout << "no" << endl #define Yes(ans) if(ans)cout << "Yes"<< endl; else cout << "No" << endl #define YES(ans) if(ans)cout << "YES"<< endl ;else cout << "NO" << endl #define all1(x) x.begin(),x.end() #define all2(x) x.rbegin(), x.rend() #define so(x) sort(all1(x)) #define re(x) reverse(all1(x)) #define rso(x) sort(all2(x)) #define vco(x, a) count(all1(x), a) #define per(x) next_permutation(all1(x)) int main(){ ll n; cin >> n; vvll ans(0, vll(3)); ll sum = 0; rep(i, sqrt(n)) rep2(j, i+1, sqrt(n)){ if((n-i*j)%(i+j)==0){ if(j<(n-i*j)/(i+j)){ ans.push_back({i, j, (n-i*j)/(i+j)}); sum += 6; } } } rep2(i, 1, sqrt(n)){ if(n%i==0){ ll m = n/i; if(i%2==m%2){ ans.push_back({i, i, (m-i)/2}); if(i!=(m-i)/2) sum += 3; else sum += 1; } } } cout << sum << endl; rep(i, ans.size()){ so(ans[i]); do{ cout << ans[i][0] << ' ' << ans[i][1] << ' ' << ans[i][2] << endl; }while(per(ans[i])); } }