桥本等式

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/KASH_SHADOW/article/details/86572185

桥本等式:等式两边没有重复数,且包括从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;
	
}

猜你喜欢

转载自blog.csdn.net/KASH_SHADOW/article/details/86572185