#include<iostream.h>
int x[8];
void afis()
{ cout<<x[1]<<9<<x[2]<<x[1]<<9<<"+"<<endl;
cout<<" "<<x[3]<<x[4]<<9<<"="<<endl;
cout<<"------"<<endl;
cout<<x[5]<<0<<x[6]<<x[7]<<8<<endl<<endl;
}
int cond(int k)
{ if(k==7) if(x[1]+x[4]+1!=x[7] && x[1]+x[4]+1!=x[7]+10 ) return 0;
if(k>=6)
{ if(x[1]+x[4]+1<10)
if(x[2]+x[3]<10 || (x[2]+x[3])%10!=x[6]) return 0;
if(x[1]+x[4]+1>=10)
if(x[2]+x[3]+1<10 || (x[2]+x[3]+1)%10!=x[6]) return 0;
}
if(k>=5) if(x[1]+1!=x[5]) return 0;
for(int i=1;i<k;i++)
if(x[i]==x[k]) return 0;
return 1;
}
void back(int k)
{ for(int i=1;i<=7;i++)
{x[k]=i;
if(cond(k)) if(k==7) afis();
else back(k+1);
}
}
void main()
{ back(1);
}
|