□□□□×□=□□□□
mop上有人问这个如何编程实现
题目是123456789这9个数字组成一个等式,不可重复
□□□□×□=□□□□
我的想法就是枚举
于是:
题目是123456789这9个数字组成一个等式,不可重复
□□□□×□=□□□□
我的想法就是枚举
于是:
#include
<
iostream
>
using namespace std;
long c[ 9 ] = {1,1,1,1,1,1,1,1,1} ;
int check( int );
main() {
for(c[0]=1;c[0]<10;c[0]++)
for(c[1]=1;c[1]<10;c[1]++)
if (check(1)) ;else
for(c[2]=1;c[2]<10;c[2]++)
if (check(2)) ; else
for(c[3]=1;c[3]<10;c[3]++)
if (check(3)) ;else
for(c[4]=1;c[4]<10;c[4]++)
if (check(4)) ;else
for(c[5]=1;c[5]<10;c[5]++)
if (check(5)) ;else
for(c[6]=1;c[6]<10;c[6]++)
if (check(6)) ;
else for(c[7]=1;c[7]<10;c[7]++)
if (check(7)) ;
else for(c[8]=1;c[8]<10;c[8]++){
if (check(8)) ;
else if((c[0]*1000+c[1]*100+c[2]*10+c[3])*c[4]==(c[5]*1000+c[6]*100+c[7]*10+c[8]))
cout<<c[0]<<c[1]<<c[2]<<c[3]<<"*"<<c[4]<<"="<<c[5]<<c[6]<<c[7]<<c[8]<<endl;
}
}
int check( int i) {
int flag=0;
for (int ctr=0;ctr<i;ctr++)
if (ctr==i) ctr++;
else if(c[ctr]==c[i]) flag++;
return flag;
}
using namespace std;
long c[ 9 ] = {1,1,1,1,1,1,1,1,1} ;
int check( int );
main() {
for(c[0]=1;c[0]<10;c[0]++)
for(c[1]=1;c[1]<10;c[1]++)
if (check(1)) ;else
for(c[2]=1;c[2]<10;c[2]++)
if (check(2)) ; else
for(c[3]=1;c[3]<10;c[3]++)
if (check(3)) ;else
for(c[4]=1;c[4]<10;c[4]++)
if (check(4)) ;else
for(c[5]=1;c[5]<10;c[5]++)
if (check(5)) ;else
for(c[6]=1;c[6]<10;c[6]++)
if (check(6)) ;
else for(c[7]=1;c[7]<10;c[7]++)
if (check(7)) ;
else for(c[8]=1;c[8]<10;c[8]++){
if (check(8)) ;
else if((c[0]*1000+c[1]*100+c[2]*10+c[3])*c[4]==(c[5]*1000+c[6]*100+c[7]*10+c[8]))
cout<<c[0]<<c[1]<<c[2]<<c[3]<<"*"<<c[4]<<"="<<c[5]<<c[6]<<c[7]<<c[8]<<endl;
}
}
int check( int i) {
int flag=0;
for (int ctr=0;ctr<i;ctr++)
if (ctr==i) ctr++;
else if(c[ctr]==c[i]) flag++;
return flag;
}