蓝桥杯 算法提高 勾股数

这题不难,在暴力里加一点点小小的判断就可以了只是有点小技巧

#include <iostream>
#include <memory.h>
using namespace std;
int visa[500];
int visb[500];
int visc[500];

int main()
{
	memset(visa,0,sizeof(visa));
	memset(visb,0,sizeof(visb));
	memset(visc,0,sizeof(visc));
	for(int a=1;a<=500;a++){
		for(int b=1;b<=500;b++){
			if(a!=b){
				for(int c=1;c<=500;c++){
					if(a+b+c<=1000&&a*a+b*b==c*c){
						if(visc[c]==1){
							//判断是否换位后相等 
							if(visa[b]==1&&visb[a]==1)
							continue;
							else{ //不相等标记a和b然后输出 
								visa[a]=1;
								visb[b]=1;
								cout<<a<<" "<<b<<" "<<c<<endl;
							}
						}
						else{//c不等直接标记然后输出
							visa[a]=1;
							visb[b]=1;
							visc[c]=1;
							cout<<a<<" "<<b<<" "<<c<<endl;
						}
					}
					
				}
			}
		}
	}
	
	return 0;
}


ac代码如下



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值