C++编程 已知A>B>C,A+B+C<100,求满足1/A*A+1/B*B=1/C*C的共有多少组,看看我为什么错了。
#include<iostream>#include<cmath>usingnamespacestd;main(){intA,B,C;for(C=1;C<33;C++)f...
#include <iostream>
#include <cmath>
using namespace std;
main()
{
int A,B,C;
for(C=1;C<33;C++)
for(B=C+1;B<100;B++)
for(A=B+1;C<100;C++)
{
if( (A + B + C < 100) && ( (A * A * B * B) == ((A * A + B * B) * C * C) ) )
cout<<A<<'\t'<<B<<'\t'<<endl;
}
return(0);
} 展开
#include <cmath>
using namespace std;
main()
{
int A,B,C;
for(C=1;C<33;C++)
for(B=C+1;B<100;B++)
for(A=B+1;C<100;C++)
{
if( (A + B + C < 100) && ( (A * A * B * B) == ((A * A + B * B) * C * C) ) )
cout<<A<<'\t'<<B<<'\t'<<endl;
}
return(0);
} 展开
6个回答
2013-04-18
展开全部
( (A * A * B * B) == ((A * A + B * B) * C * C) )分式化整式好像没错,其实它是错的。int的最大值是65530 ,当你a=b=50的时候,A * A * B * B早早数据溢出了。将int 改为long就行了。还有你程序我调试了下,第三个for应该改为 for(A=B+1;A<100;A++)这样出来有两组数据。
展开全部
其实你的思路还是不错;不过对题目的理解偏差较大;
为什么你的理解是错误的:
按照你的代码,你认为1/A*A可以是分数;假如是这样,那么在判断代码里有一行比较:
(A * A * B * B) == ((A * A + B * B) * C * C) )
其实这个等式是不可能成立的;
因为右边总是比左边大;可以用着差法证明:右边-左边=A2C2+B2C2-A2B2=A2(C2-B2)+B2C2>C2(C2-B2)+B2C2>=C2(C2)>0;因此等式不可能成立;
其实对于1/A*A在0<A的情况下,就只有2种结果:0或1;
为什么你的理解是错误的:
按照你的代码,你认为1/A*A可以是分数;假如是这样,那么在判断代码里有一行比较:
(A * A * B * B) == ((A * A + B * B) * C * C) )
其实这个等式是不可能成立的;
因为右边总是比左边大;可以用着差法证明:右边-左边=A2C2+B2C2-A2B2=A2(C2-B2)+B2C2>C2(C2-B2)+B2C2>=C2(C2)>0;因此等式不可能成立;
其实对于1/A*A在0<A的情况下,就只有2种结果:0或1;
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-04-18
展开全部
最里面的循环条件怎么是C。不是A么。。。
改成for(A=B+1;A<100;A++)就有输出了,但是感觉这个条件会多很多循环,应该可以优化下,但我没还想到。
改成for(A=B+1;A<100;A++)就有输出了,但是感觉这个条件会多很多循环,应该可以优化下,但我没还想到。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
C++格式控制操作符是没有'\t'的,如要空位可输入' ',符号中间须1个空格以上,你写的程序与你要求不同。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-04-18
展开全部
#include <iostream>
using namespace std;
void main()
{
double A,B,C;
for(C=1;C<33;C++)
for(B=C+1;B<100;B++)
for(A=B+1;A<100;A++)
{
if( (A+B+C<100) && (1/(A*A)+1/(B*B)==1/(C*C)))
cout<<A<<'\t'<<B<<'\t'<<C<<endl;
}
}
VC++6.0测过了
using namespace std;
void main()
{
double A,B,C;
for(C=1;C<33;C++)
for(B=C+1;B<100;B++)
for(A=B+1;A<100;A++)
{
if( (A+B+C<100) && (1/(A*A)+1/(B*B)==1/(C*C)))
cout<<A<<'\t'<<B<<'\t'<<C<<endl;
}
}
VC++6.0测过了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询