第一题
题目
方程整数解方程: a^2 + b^2 + c^2 = 1000
(或参见【图1.jpg】)
这个方程有整数解吗?有:a,b,c=6,8,30 就是一组解。
你能算出另一组合适的解吗?
请填写该解中最小的数字。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
思路分析
直接暴力枚举,可能出现的a,b,c。
代码
1、因为此题没有要求a,b,c必须为正整数或者是自然数,那么可以为负数
答案1
-30#include <iostream> using namespace std; int main(int argc, char** argv) { int a,b,c; int num=1000; for(int a=-33;a<33;a++){//很暴力的三次循环 for(int b=-33;b<33;b++){ for(int c=-33;c<33;c++){ if(a*a+b*b+c*c==1000){ if(min(min(a,b),c)!=6){//确保不会出现6,8,30的情况 int tmp=min(min(a,b),c); if(tmp<num){//不必再限制tmp>0 num=tmp; } } } } } } cout<<num<<endl; return 0; }
2、若此题要求a,b,c必须为正整数;
答案2
10
#include <iostream> using namespace std; int main(int argc, char** argv) { int a,b,c; int num=1000; for(int a=0;a<33;a++){//很暴力的三次循环 for(int b=0;b<33;b++){ for(int c=0;c<33;c++){ if(a*a+b*b+c*c==1000){ if(min(min(a,b),c)!=6){//确保不会出现6,8,30的情况 int tmp=min(min(a,b),c); if(tmp<num&&tmp>0){ num=tmp; } } } } } } cout<<num<<endl; return 0; }
3、若此题要求a,b,c都是自然数;
答案3
0
#include <iostream> using namespace std; int main(int argc, char** argv) { int a,b,c; int num=1000; for(int a=0;a<33;a++){//很暴力的三次循环 for(int b=0;b<33;b++){ for(int c=0;c<33;c++){ if(a*a+b*b+c*c==1000){ if(min(min(a,b),c)!=6){//确保不会出现6,8,30的情况 int tmp=min(min(a,b),c); if(tmp<num){//不必再限制tmp>0 num=tmp; } } } } } } cout<<num<<endl; return 0; }