题目:
大家提到LTC都佩服的不行,不过,如果竞赛只有这一个题目,我敢保证你和他绝对在一个水平线上!
你的任务是:计算方程x^2+y^2+z^2= num的一个正整数解。
Input
输入数据包含多个测试实例,每个实例占一行,仅仅包含一个小于等于10000的正整数num。
Output
对于每组测试数据,请按照x,y,z递增的顺序输出它的一个最小正整数解,每个实例的输出占一行,题目保证所有测试数据都有解。
Sample Input
3
Sample Output
1 1 1
思路:暴力求解,遍历可能的结果,不断试错。
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | #include<cstdio>
#include<iostream>
using namespace std;
int main()
{
int x,y,z;
int a;
bool ans = false; ///照例立个flag;
while(cin >> a)
{
if(ans)
{
break;
}
else
{
for(x = 1; x < 100; x ++) ///遍历x可能的取值;
{
if(ans)
{
break;
}
else
{
for(y = 1; y < 100; y ++) ///遍历y可能的值;
{
if(ans) ///如果ans为真则退出循环;
{
break;
}
else
{
for(z = 1; z < 100; z ++) ///遍历z可能的值;
{
int tmp = x*x + y*y + z*z;
if(tmp == a) ///如果条件满足证明找对了;
{
cout << x << " " << y << " " << z << endl;
ans = true; ///flag举起来,把ans变为真;
}
}
}
}
}
}
}
ans = false; ///ans重新初始化为false,进行下一组数据;
}
return 0;
} |
本文介绍了一道竞赛题,题目要求找到方程x^2+y^2+z^2=num的一个正整数解,并给出了使用暴力求解的方法及对应的C++实现代码。
577

被折叠的 条评论
为什么被折叠?



