桥本等式:等式两边没有重复数,且包括从0-9的所有数,如1/26+5/78=4/39
#include<iostream>
#include<math.h>
using namespace std;
int main(){
int g,i,j,k,n,a[10];
long m1,m2,m3;
i=1;a[1]=1;n=0;
while(1){
g=1;
for(k=i-1;k>=1;k--)
if(a[i]==a[k]) g=0; //两数相同,标记为g=0
if(i==9&&g==1&&a[1]<a[4]){
m1=a[2]*10+a[3]; m2=a[5]*10+a[6];m3=a[8]*10+a[9];
if(a[1]*m2*m3+a[4]*m1*m3==a[7]*m1*m2){//判断是否满足等式
n++;
//cout<<n<<" ";
cout<<a[1]<<"/"<<m1<<"+"<<a[4]<<"/"<<m2<<"="<<a[7]<<"/"<<m3;
cout<<endl;
}
}
if(i<9&&g==1){//不到9个数,往后继续
i++;a[i]=1;continue;
}
for(j=1;j<=9;j++){
if(a[i]==9&&i>1) i--;
else break; //往前返回
}
if(a[i]==9&&i==1) break;
else a[i]++; //至第一个数为9结束
}
return 0;
}