描述
观察下面的加法算式:
其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。
思路
设此公式为a+b=c,观察此公式得,a肯定是一个9000以上的四位数,而肯定在1000到2000之间,a和b重复数字只有1个,总共使用到的只有七个数字,所以可以用一个标记数组进行判断。
答案:1085
代码
#include<cstdio>
using namespace std;
int main()
{
int a,b,c,d,A,B,C,D;
for(int i=9000;i<10000;i++)
{
for(int j=1000;j<2000;j++)
{
int flag[10]={0},cnt=0;
a=i%10,b=i/10%10,c=i/100%10,d=i/1000;
flag[a]=1,flag[b]=1,flag[c]=1,flag[d]=1;
A=j%10,B=j/10%10,C=j/100%10,D=j/1000;
flag[A]=1,flag[B]=1,flag[C]=1,flag[D]=1;
for(int k=0;k<10;k++) if(flag[k]) cnt++;
for(int g=0;g<10;g++)
{
if(A==c && cnt==7)
{
int ans=g+A*10+b*100+C*1000+D*10000;
if(ans==i+j && flag[g]==0)
{
//printf("a=%d b=%d c=%d",i,j,ans);
printf("%d",j);
return 0;
}
}
}
}
}
return 0;
}