观察下面的加法算式:

      祥 瑞 生 辉

  +   三 羊 献 瑞

-------------------

   三 羊 生 瑞 气

(如果有对齐问题,可以参看【图1.jpg】)

第六届蓝桥杯C++B组:三羊献瑞_#include

其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。

请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。

答案:1、0、8、5

所有文字代表的数字为:

            三(1)羊(0)献(8)瑞(5)、

            祥(9)瑞(5)生(6)辉(7)、

三(1)羊(0)生(6)瑞(5)气(2)

参考代码1:(全排列——暴力求解)

#include<cstdio>
#include<vector>
using namespace std;

void check(vector<int> v){

}

int main(){
vector<int> v;
v.push_back(0);
for (int i = 2; i <=9; ++i) {
v.push_back(i);
}

do{
if(v[3] >= 8){
int r1 = 1 * 1000 + v[0] * 100 + v[1] * 10 + v[2];
int r2 = v[3] * 1000 + v[2] * 100 + v[4] * 10 + v[5];
int r3 = 1 * 10000 + v[0] * 1000 + v[4] * 100 + v[2] * 10 + v[6];
if(r1 + r2 == r3){
for (int i = 0; i <= 6; ++i) {
printf("%d\n", v[i]);
}
break;
}
}
}while(next_permutation(v.begin(),v.end()));

return 0;
}