Run ID:7141

提交时间:2025-04-05 11:20:31

#include <iostream> #include <vector> #include <unordered_map> #include <algorithm> using namespace std; struct Result { int a, b, c, d; }; bool compare(const Result &r1, const Result &r2) { if (r1.a != r2.a) return r1.a < r2.a; if (r1.b != r2.b) return r1.b < r2.b; if (r1.c != r2.c) return r1.c < r2.c; return r1.d < r2.d; } int main() { int N; cin >> N; vector<int> cubes(N + 1); for (int i = 0; i <= N; ++i) { cubes[i] = i * i * i; } unordered_map<int, int> cube_map; for (int a = 2; a <= N; ++a) { cube_map[cubes[a]] = a; } vector<Result> results; for (int b = 2; b <= N; ++b) { for (int c = b; c <= N; ++c) { for (int d = c; d <= N; ++d) { int sum = cubes[b] + cubes[c] + cubes[d]; auto it = cube_map.find(sum); if (it != cube_map.end()) { results.push_back({it->second, b, c, d}); } } } } sort(results.begin(), results.end(), compare); for (const auto &res : results) { cout << "Cube = " << res.a << ", Triple = (" << res.b << "," << res.c << "," << res.d << ")" << endl; } return 0; }