c语言算法设计

如何设计一个算法,计算a*X1*X1+b*x2*x2+c*x3*x3+d*x4*x4=0,输入一组a,b,c,d,求有多少组x1x2x3x4满足解?(a,b,c,d,x1... 如何设计一个算法,计算a*X1*X1+b*x2*x2+c*x3*x3+d*x4*x4=0,输入一组a,b,c,d,求有多少组x1x2x3x4满足解?(a,b,c,d,x1,x2,x3,x4均不等于0,abcd范围为-50到50,x1x2x3x4范围-100到100)
不能用四个循环,会超时
展开
 我来答
雪5029
2013-04-17 · 超过12用户采纳过TA的回答
知道答主
回答量:28
采纳率:0%
帮助的人:29.6万
展开全部
我有个想法,不知道能不能帮到你
既然a*X1*X1+b*x2*x2+c*x3*x3+d*x4*x4=0,可以说明一个事实,a,b,c,d中必然只有两种情况,其一则是a,b,c,d中只有一个负数,其二则是a,b,c,d中只有一个正数,这样范围就缩小了;
总结下来的情况只有四种:
-a,b,c,d;
a,-b,c,d;

a,b,-c,d;

a,b,c,-d;

你可以往这方面考虑,这个方法理论上应该是可行的。。
更多追问追答
追问
为啥不能是两个正数,两个负数
追答
a*X1*X1+b*x2*x2+c*x3*x3+d*x4*x4=0  

等价于
a+4*(b+4*d)+9*c=0

a+4b+9c+16d=0

结果就可想而知了。。根据公约数和公倍数的性质,a和c的符号应该是一整一反,b和d的符号为一正一反;
进而题目就可以转换为找他们系数的最小公倍数;

a,b,c,d就可以用公倍数除以他们的系数,得出结果了,列举的结果在(-50,50)之间的输出就可以了。。。一般如果a如果不在这个范围内,那么这组数据就淘汰了。。

其中一组解就是:
a= -9,b=4,c=1,d=-1,
解集应该是:
4 <= | b | <= 12 1<= | a | <= 45 1<= | c | <=5 1<= | d | <=3
你可以往这方面思考下,我也是想到哪里说道哪?初步计算了一下。。不知道方法可行不。。。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hwm_2012
2013-04-17 · TA获得超过966个赞
知道小有建树答主
回答量:470
采纳率:0%
帮助的人:411万
展开全部
这里都没说abcd为整数,解都是无穷多的,还多少组,组得完么,
题目得再限定各个量都为整数,才有可能去举一举,
跟算法没关体系,只是数学题,没意思
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
仒雨
2013-04-17 · TA获得超过175个赞
知道小有建树答主
回答量:282
采纳率:100%
帮助的人:293万
展开全部
对abcd和x1,x2,x3,x4类型会有个说明,不然解是无数的,同意楼上说法。
更多追问追答
追问
好吧,失误,整数
追答
超时不是因为计算不出吧,是因为你要将结果输出,显示的慢而已,你直接将个数总数输出显示的话,一下就出来了。
这不是算法,是纯计算题,不存在那人说的输入数的问题,输入啥数是用户的决定,如果全正,我输出“不存在一组x1,x2,x3,x4使得等式成立”即可,你要你要将这么多组全显示,那只能说显示得太慢了,随便一个就是几十甚至几百万个,这不是cpu计算的问题,是显示器的问题
例如:
-3 5 8 9
就有122473组解
来自:求助得到的回答
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-04-17
展开全部
你可以优化循环嘛,有时候得到x1就做到不会有其他的x2,x3,x4满足条件,然后就把这一枝剪掉,这样时间上会好一点
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友9746fdc
2013-04-17 · TA获得超过270个赞
知道小有建树答主
回答量:268
采纳率:0%
帮助的人:209万
展开全部
最笨的办法,用四个循环,判断满足就将解输出 ,继续循环
追问
这个会超时,我需要一种简单的算法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式