
用C++求编写一个求分式的小程序
1至9这9个整数,组成三个分式,每个分式的分子为一位数,分母为两位数;三个分式相加,结果为1。求能解出这个问题的C++程序...
1至9这9个整数,组成三个分式,每个分式的分子为一位数,分母为两位数;三个分式相加,结果为1。
求能解出这个问题的C++程序 展开
求能解出这个问题的C++程序 展开
4个回答
2009-09-12
展开全部
#include<iostream>
using namespace std;
int main()
{
int i,j,k,m,n,p;
for (i=1;i<=9;++i)
{
for(j=1;j<=9;++j)
if(i!=j)
{
for(k=1;k<=9;++k)
if(i!=j&&i!=k&&j!=k)
for(m=12;m<99;++m)
if(m/10!=i&&m/10!=j&&m/10!=k&&m%10!=i&&m%10!=i&&m%10!=j&&m%10!=k&&m/10!=m%10)
for(n=12;n<99;++n)
if(n/10!=i&&n/10!=j&&n/10!=k&&n%10!=i&&n%10!=i&&n%10!=j&&n%10!=k&&m/10!=n/10&&m/10!=n%10&&m%10!=n/10&&m%10!=n%10&&n/10!=n%10)
for(p=12;p<99;++p)
if(p/10!=i&&p/10!=j&&p/10!=k&&p%10!=i&&p%10!=i&&p%10!=j&&p%10!=k&&p/10!=n/10&&p/10!=n%10&&p%10!=n/10&&p%10!=n%10&&p/10!=m/10&&p/10!=m%10&&p%10!=m/10&&p%10!=m%10&&m%10!=0&&n%10!=0&&p%10!=0&&p/10!=p%10)
{if((i*m*n+j*m*p+k*n*p)==m*n*p){
cout<<i<<"/"<<p<<" "<<j<<"/"<<n<<" "<<k<<"/"<<m<<endl;}
}
}
}
cout<<"运行完毕!"<<endl;
return 0;
}
using namespace std;
int main()
{
int i,j,k,m,n,p;
for (i=1;i<=9;++i)
{
for(j=1;j<=9;++j)
if(i!=j)
{
for(k=1;k<=9;++k)
if(i!=j&&i!=k&&j!=k)
for(m=12;m<99;++m)
if(m/10!=i&&m/10!=j&&m/10!=k&&m%10!=i&&m%10!=i&&m%10!=j&&m%10!=k&&m/10!=m%10)
for(n=12;n<99;++n)
if(n/10!=i&&n/10!=j&&n/10!=k&&n%10!=i&&n%10!=i&&n%10!=j&&n%10!=k&&m/10!=n/10&&m/10!=n%10&&m%10!=n/10&&m%10!=n%10&&n/10!=n%10)
for(p=12;p<99;++p)
if(p/10!=i&&p/10!=j&&p/10!=k&&p%10!=i&&p%10!=i&&p%10!=j&&p%10!=k&&p/10!=n/10&&p/10!=n%10&&p%10!=n/10&&p%10!=n%10&&p/10!=m/10&&p/10!=m%10&&p%10!=m/10&&p%10!=m%10&&m%10!=0&&n%10!=0&&p%10!=0&&p/10!=p%10)
{if((i*m*n+j*m*p+k*n*p)==m*n*p){
cout<<i<<"/"<<p<<" "<<j<<"/"<<n<<" "<<k<<"/"<<m<<endl;}
}
}
}
cout<<"运行完毕!"<<endl;
return 0;
}
展开全部
下面的程序是我原创的,这个问题有点难度,我的代码可能有点难懂,不懂的话让你身边的高手给你解读解读,程序在Visual Studio 2005中编译运行都没错,注释没时间做了,自己理解吧!
#include<iostream>
using namespace std;
int main()
{
int **p=new int*[9];
int i;
int a[9];
p[0]=new int[9];
for(i=0;i<=8;i++)
p[0][i]=i+1;
for(int i=0;i<=8;i++)
{
a[0]=p[0][i];
p[1]=new int[8];
for(int i=0,j=0;i<=8;i++)
if(p[0][i]!=a[0]) p[1][j++]=p[0][i];
for(int i=0;i<=7;i++)
{
a[1]=p[1][i];
p[2]=new int[7];
for(int i=0,j=0;i<=7;i++)
if(p[1][i]!=a[1]) p[2][j++]=p[1][i];
for(int i=0;i<=6;i++)
{
a[2]=p[2][i];
p[3]=new int[6];
for(int i=0,j=0;i<=6;i++)
if(p[2][i]!=a[2]) p[3][j++]=p[2][i];
for(int i=0;i<=5;i++)
{
a[3]=p[3][i];
p[4]=new int[5];
for(int i=0,j=0;i<=5;i++)
if(p[3][i]!=a[3]) p[4][j++]=p[3][i];
for(int i=0;i<=4;i++)
{
a[4]=p[4][i];
p[5]=new int[4];
for(int i=0,j=0;i<=4;i++)
if(p[4][i]!=a[4]) p[5][j++]=p[4][i];
for(int i=0;i<=3;i++)
{
a[5]=p[5][i];
p[6]=new int[3];
for(int i=0,j=0;i<=3;i++)
if(p[5][i]!=a[5]) p[6][j++]=p[5][i];
for(int i=0;i<=2;i++)
{
a[6]=p[6][i];
p[7]=new int[2];
for(int i=0,j=0;i<=2;i++)
if(p[6][i]!=a[6]) p[7][j++]=p[6][i];
for(int i=0;i<=1;i++)
{
a[7]=p[7][i];
p[8]=new int;
for(int i=0,j=0;i<=1;i++)
if(p[7][i]!=a[7]) p[8][j++]=p[7][i];
a[8]=p[8][0];
if(a[0]*(10*a[4]+a[5])*(10*a[7]+a[8])+a[3]*(10*a[1]+a[2])*(10*a[7]+a[8])+a[6]*(10*a[1]+a[2])*(10*a[4]+a[5])==(10*a[1]+a[2])*(10*a[4]+a[5])*(10*a[7]+a[8]))
{cout<<"最后结果是:\n"<<a[0]<<"/"<<10*a[1]+a[2]<<"+"<<a[3]<<"/"<<10*a[4]+a[5]<<"+"<<a[6]<<"/"<<10*a[7]+a[8]<<"=1"<<endl; return 0;}//经过验证最后只有一个结果,所以一旦找到合适的取值,就在打印后结束整个程序,以免继续进行计算,那样会降低程序的效率。
delete p[8];
}
delete p[7];
}
delete p[6];
}
delete p[5];
}
delete p[4];
}
delete p[3];
}
delete p[2];
}
delete p[1];
}
delete p[0];
delete[] p;
return 0;
}
#include<iostream>
using namespace std;
int main()
{
int **p=new int*[9];
int i;
int a[9];
p[0]=new int[9];
for(i=0;i<=8;i++)
p[0][i]=i+1;
for(int i=0;i<=8;i++)
{
a[0]=p[0][i];
p[1]=new int[8];
for(int i=0,j=0;i<=8;i++)
if(p[0][i]!=a[0]) p[1][j++]=p[0][i];
for(int i=0;i<=7;i++)
{
a[1]=p[1][i];
p[2]=new int[7];
for(int i=0,j=0;i<=7;i++)
if(p[1][i]!=a[1]) p[2][j++]=p[1][i];
for(int i=0;i<=6;i++)
{
a[2]=p[2][i];
p[3]=new int[6];
for(int i=0,j=0;i<=6;i++)
if(p[2][i]!=a[2]) p[3][j++]=p[2][i];
for(int i=0;i<=5;i++)
{
a[3]=p[3][i];
p[4]=new int[5];
for(int i=0,j=0;i<=5;i++)
if(p[3][i]!=a[3]) p[4][j++]=p[3][i];
for(int i=0;i<=4;i++)
{
a[4]=p[4][i];
p[5]=new int[4];
for(int i=0,j=0;i<=4;i++)
if(p[4][i]!=a[4]) p[5][j++]=p[4][i];
for(int i=0;i<=3;i++)
{
a[5]=p[5][i];
p[6]=new int[3];
for(int i=0,j=0;i<=3;i++)
if(p[5][i]!=a[5]) p[6][j++]=p[5][i];
for(int i=0;i<=2;i++)
{
a[6]=p[6][i];
p[7]=new int[2];
for(int i=0,j=0;i<=2;i++)
if(p[6][i]!=a[6]) p[7][j++]=p[6][i];
for(int i=0;i<=1;i++)
{
a[7]=p[7][i];
p[8]=new int;
for(int i=0,j=0;i<=1;i++)
if(p[7][i]!=a[7]) p[8][j++]=p[7][i];
a[8]=p[8][0];
if(a[0]*(10*a[4]+a[5])*(10*a[7]+a[8])+a[3]*(10*a[1]+a[2])*(10*a[7]+a[8])+a[6]*(10*a[1]+a[2])*(10*a[4]+a[5])==(10*a[1]+a[2])*(10*a[4]+a[5])*(10*a[7]+a[8]))
{cout<<"最后结果是:\n"<<a[0]<<"/"<<10*a[1]+a[2]<<"+"<<a[3]<<"/"<<10*a[4]+a[5]<<"+"<<a[6]<<"/"<<10*a[7]+a[8]<<"=1"<<endl; return 0;}//经过验证最后只有一个结果,所以一旦找到合适的取值,就在打印后结束整个程序,以免继续进行计算,那样会降低程序的效率。
delete p[8];
}
delete p[7];
}
delete p[6];
}
delete p[5];
}
delete p[4];
}
delete p[3];
}
delete p[2];
}
delete p[1];
}
delete p[0];
delete[] p;
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
刚发的有点难看,改了一下:
#include<iostream>
using namespace std;
int main()
{
int i,j,k,m,n,p;
for (i=1;i<=9;++i)
{
for(j=1;j<=9;++j)
if(i!=j)
for(k=1;k<=9;++k)
if(i!=j&&i!=k&&j!=k)
for(m=12;m<99;++m)
if(m/10!=i&&m/10!=j&&m/10!=k&&m%10!=i&&m%10!=i&&m%10!=j&&m%10!=k&&m/10!=m%10)
for(n=12;n<99;++n)
if(n/10!=i&&n/10!=j&&n/10!=k&&n%10!=i&&n%10!=i&&n%10!=j&&n%10!=k&&m/10!=n/10&&m/10!=n%10&&m%10!=n/10&&m%10!=n%10&&n/10!=n%10)
for(p=12;p<99;++p)
if(p/10!=i&&p/10!=j&&p/10!=k&&p%10!=i&&p%10!=i&&p%10!=j&&p%10!=k&&p/10!=n/10&&p/10!=n%10&&p%10!=n/10&&p%10!=n%10&&p/10!=m/10&&p/10!=m%10&&p%10!=m/10&&p%10!=m%10&&m%10!=0&&n%10!=0&&p%10!=0&&p/10!=p%10)
{
if((i*m*n+j*m*p+k*n*p)==m*n*p)
{
cout<<i<<"/"<<p<<"+"<<j<<"/"<<n<<"+"<<k<<"/"<<m<<"=1"<<endl;
return 0;
}
}
}
cout<<"无满足条件等式!!"<<endl;
return 0;
}
#include<iostream>
using namespace std;
int main()
{
int i,j,k,m,n,p;
for (i=1;i<=9;++i)
{
for(j=1;j<=9;++j)
if(i!=j)
for(k=1;k<=9;++k)
if(i!=j&&i!=k&&j!=k)
for(m=12;m<99;++m)
if(m/10!=i&&m/10!=j&&m/10!=k&&m%10!=i&&m%10!=i&&m%10!=j&&m%10!=k&&m/10!=m%10)
for(n=12;n<99;++n)
if(n/10!=i&&n/10!=j&&n/10!=k&&n%10!=i&&n%10!=i&&n%10!=j&&n%10!=k&&m/10!=n/10&&m/10!=n%10&&m%10!=n/10&&m%10!=n%10&&n/10!=n%10)
for(p=12;p<99;++p)
if(p/10!=i&&p/10!=j&&p/10!=k&&p%10!=i&&p%10!=i&&p%10!=j&&p%10!=k&&p/10!=n/10&&p/10!=n%10&&p%10!=n/10&&p%10!=n%10&&p/10!=m/10&&p/10!=m%10&&p%10!=m/10&&p%10!=m%10&&m%10!=0&&n%10!=0&&p%10!=0&&p/10!=p%10)
{
if((i*m*n+j*m*p+k*n*p)==m*n*p)
{
cout<<i<<"/"<<p<<"+"<<j<<"/"<<n<<"+"<<k<<"/"<<m<<"=1"<<endl;
return 0;
}
}
}
cout<<"无满足条件等式!!"<<endl;
return 0;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2009-09-10
展开全部
好难
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询