考虑方程式:a^3 + b^3 = c^3 + d^3 其中:“^”表示乘方。a、b、c、d是互不相同的小于30的正整数。 这个方程有很多解。 蓝桥杯比赛C语言

考虑方程式:a^3 + b^3 = c^3 + d^3

其中:“^”表示乘方。a、b、c、d是互不相同的小于30的正整数。

这个方程有很多解。比如:

a = 1,b=12,c=9,d=10 就是一个解。因为:1的立方加12的立方等于1729,而9的立方加10的立方也等于1729。

当然,a=12,b=1,c=9,d=10 显然也是解。

如果不计abcd交换次序的情况,这算同一个解。

你的任务是:找到所有小于30的不同的正整数解。把a b c d按从小到大排列,用逗号分隔,每个解占用1行。比如,刚才的解输出为:

1,9,10,12

不同解间的顺序可以不考虑。

算法分析

小于30的整数,暴力法,emmmm,不会炸,用四重循环,再加上判断条件,关键是怎么去掉重复,我将答案都保存在一个数组中,排序,新数据存入后与数组中已存在的数据比较,若都相同,则重复,将元素从数组中移除,不相同,保留,最后输出该数组。

欢迎各位大佬批评指正。不懂得也可以问,看到必回。

代码

#include<stdio.h>
#include<algorithm>
using namespace std;
int main()
{
	int a,b,c,d,i=0,e[50][4],j;
	for(a=1;a<30;a++)
	for(b=a+1;b<30;b++)
	for(c=1;c<30;c++)
	for(d=c+1;d<30;d++)
	{
		if(a*a*a+b*b*b==c*c*c+d*d*d&&a!=c){
			e[i][0]=a;
			e[i][1]=b;
			e[i][2]=c;
			e[i][3]=d;
			sort(e[i],e[i]+4);
			for(j=0;j<i;j++)
			{
				if(e[i][0]==e[j][0]&&e[i][1]==e[j][1]&&e[i][2]==e[j][2]&&e[i][3]==e[j][3])
				{
					e[i][0]=0;
			e[i][1]=0;
			e[i][2]=0;
			e[i][3]=0;
			i--;
				}
			}
		i++;}
	}
	for(int m=0;m<i;m++)
	for(int n=0;n<4;n++)
	{
		printf("%d",e[m][n]);
		if(n<3)
		printf(",");
		if(n==3)
		printf("\n");
	}
	return 0; 
}

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值