题目:
A + --- + ------- = 10
C GHI
(如果显示有问题,可以参见【图1.jpg】)
这个算式中A~I代表1~9的数字,不同的字母代表不同的数字。
6+8/3+952/714 就是一种解法,
5+3/1+972/486 是另一种解法。
答案:29种
解题说明:
直接循环暴力解决,不过循环过程中要注意满足题意,因此要进行多次判断
代码如下:
#include<iostream>
using namespace std;
int main()
{
int a,b,c,d,g;
int count1=0;
int m1,n1,q1,m2,n2,q2;
for(a=1;a<=9;a++)
{
for(b=1;b<=9;b++)
{
if(b==a)
continue;
for(c=1;c<=9;c++)
{
if(c==b||c==a)
continue;
for(d=111;d<=999;d++)
{
m1=d%10;//个位数
n1=(d/10)%10;//十位数
q1=d/100;//百位数
if(m1==0||n1==0||q1==0)
continue;
if(m1==n1||m1==q1||n1==q1)//先判断自身是否均不通
continue;
//再判断与其他值是否相等
if(m1==a||m1==b||m1==c)
continue;
if(n1==a||n1==b||n1==c)
continue;
if(q1==a||q1==b||q1==c)
continue;
/*if((d/10)%10==0||d%10==0)
continue;*/
for(g=111;g<=999;g++)
{
m2=g%10;//个位数
n2=(g/10)%10;//十位数
q2=g/100;//百位数
if(m2==0||n2==0||q2==0)
continue;
if(m2==n2||m2==q2||n2==q2)//先判断自身是否均不通
continue;
//再判断与其他值是否相等
if(m2==a||m2==b||m2==c)
continue;
if(n2==a||n2==b||n2==c)
continue;
if(q2==a||q2==b||q2==c)
continue;
if(m2==m1||m2==n1||m2==q1)
continue;
if(n2==m1||n2==n1||n2==q1)
continue;
if(q2==m1||q2==n1||q2==q1)
continue;
if(a*c*g+b*g+c*d==10*c*g)
{
count1++;
cout<<a<<" "<<b<<" "<<c<<" "<<d<<" "<<g<<" "<<endl;
}
}
}
}
}
}
cout<<count1<<endl;
return 0;
}