結果
| 問題 |
No.2358 xy+yz+zx=N
|
| コンテスト | |
| ユーザー |
hitonanode
|
| 提出日時 | 2023-06-23 23:28:46 |
| 言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 47 ms / 2,000 ms |
| コード長 | 953 bytes |
| コンパイル時間 | 1,322 ms |
| コンパイル使用メモリ | 111,644 KB |
| 実行使用メモリ | 6,944 KB |
| 最終ジャッジ日時 | 2024-07-01 17:43:14 |
| 合計ジャッジ時間 | 2,147 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 10 |
ソースコード
#include <algorithm>
#include <iostream>
#include <tuple>
#include <vector>
using namespace std;
using lint = long long;
int main() {
int N;
cin >> N;
vector<tuple<int, int, int>> ret;
for (lint lo = 0; lo * lo * 3 <= N; ++lo) {
for (lint med = lo; lo * med + med * med + med * lo <= N; ++med) {
if (!med) continue;
lint rem = N - lo * med;
if (rem % (lo + med)) continue;
lint hi = rem / (lo + med);
ret.emplace_back(lo, med, hi);
ret.emplace_back(lo, hi, med);
ret.emplace_back(hi, med, lo);
ret.emplace_back(hi, lo, med);
ret.emplace_back(med, hi, lo);
ret.emplace_back(med, lo, hi);
}
}
sort(ret.begin(), ret.end());
ret.erase(unique(ret.begin(), ret.end()), ret.end());
cout << ret.size() << '\n';
for (auto [x, y, z] : ret) cout << x << ' ' << y << ' ' << z << '\n';
}
hitonanode