三羊献瑞
题目描述
观察下面的加法算式:
其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。
请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。
输出
请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。
思路 暴力求解
由题目可知是8个不同的数,组成两个四位数a,b和一个五位数c。并且a+b=c;
用暴力穷举法可以定义8个变量,用8个for循环,再建个数组保证每个变量不一样。 难点在于每个变量不一样。
代码;
#include <iostream>
using namespace std;
int main(){
int x1,x2,x3,x4;
int y1,y2,y3,y4;
int a,b,c;
int flag[10];
for(int i=0;i<10;i++)
flag[i]=0;
for( x1=0;x1<=9;x1++){
flag[x1]=1;
for(x2=0;x2<=9;x2++){
if(flag[x2]==1) continue;
else flag[x2]=1;
for( x3=0;x3<=9;x3++){
if(flag[x3]==1) continue;
else flag[x3]=1;
for(x4=1;x4<=9;x4++){
if(flag[x4]==1) continue;
else flag[x4]=1;
for(y1=0;y1<=9;y1++){
if(flag[y1]==1) continue;
else flag[y1]=1;
for(y2=0;y2<=9;y2++){
if(flag[y2]==1) continue;
else flag[y2]=1;
for(y3=1;y3<=9;y3++){
if(flag[y3]==1) continue;
else flag[y3]=1;
for(y4=0;y4<=9;y4++){
if(flag[y4]==1) continue;
else flag[y4]=1;
a=x1+10*x2+100*x3+1000*x4;
b=x3+10*y1+100*y2+1000*y3;
c=y4+10*x3+100*x2+1000*y2+10000*y3;
if((a+b)==c) {
cout<<b;
break;
for(int i=0;i<10;i++) flag[i]=0;
}
flag[y4]=0;
}
flag[y3]=0;
}
flag[y2]=0;
}
flag[y1]=0;
}
flag[x4]=0;
}
flag[x3]=0;
}
flag[x2]=0;
}
flag[x1]=0;
}
return 0;
}
答案其实有两个 1085 1086 选一个直接输出就好。