C++ 输出一个数 n,n 的三平方数指的是三个不同的数的平方和正好等于 n例如: 5 = 02 + 12 + 22 14 = 12 + 22 + 32 如果有这样三个不同的数的平方和正好等于 n 就输出这三个数,有多个不同的满足要求的数时把所有的情况输出,每种情况单独写一行,如果没有满足条件的三个数输出”oh,no” [输入]n,表示输入的数 (n 为小于 100000 的正整数) [输出]每三个符合的情况单独写一行,用空格相隔 如果没有满足条件的三个数输出”oh,no"
时间: 2024-02-25 18:55:49 浏览: 156
以下是 C++ 代码实现:
```cpp
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int n;
cin >> n;
bool flag = false; // 标记是否有解
for (int a = 0; a * a <= n; a++)
{
for (int b = a; b * b <= n - a * a; b++)
{
for (int c = b; c * c <= n - a * a - b * b; c++)
{
if (a * a + b * b + c * c == n && a != b && b != c && c != a)
{
flag = true;
cout << a << " " << b << " " << c << endl;
}
}
}
}
if (!flag)
{
cout << "oh, no" << endl;
}
return 0;
}
```
该程序采用三重循环来枚举三个数的平方和是否等于输入的数 n,并且保证这三个数互不相同。其中,第一个循环枚举 a,第二个循环枚举 b,第三个循环枚举 c,三个循环的上界都是 $\sqrt{n}$。由于 a、b、c 是互不相同的,因此第二个循环的起始值是 a,第三个循环的起始值是 b。
如果找到了满足条件的三个数,就输出这三个数,同时将 flag 标记为 true。如果三重循环结束后 flag 仍为 false,说明没有找到满足条件的三个数,此时输出 "oh, no"。