【暴力循环】(2015)第六届蓝桥杯省赛 C/C++ A组 题解(第一题)

第一题 

题目

方程整数解
方程: 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 
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(tmp0 
						num=tmp;
				    	}
					}
				}
			}
		}
	}
	cout<

2、若此题要求a,b,c必须为正整数;

答案2

10

#include 

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(tmp0){
						num=tmp;
				    	}
					}
				}
			}
		}
	}
	cout<

3、若此题要求a,b,c都是自然数;

答案3

0

#include 
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(tmp0 
						num=tmp;
				    	}
					}
				}
			}
		}
	}
	cout<



你可能感兴趣的:(【暴力循环】(2015)第六届蓝桥杯省赛 C/C++ A组 题解(第一题))