蓝桥杯——三羊献瑞

三羊献瑞

观察下面的加法算式:

   祥 瑞 生 辉
+ 三 羊 献 瑞
-------------------
三 羊 生 瑞 气

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

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

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

1由题可得三为1,所以剩下几个数就是0,2,3,4,5,6,7,8,9

2,式子可以写成 a b c d

                      +   1 f  e b

                      1   f  c  b h

所以有七个未知数

3.从9个数中取7个数,输出满足的情况

#include <iostream>
#include <string>
using namespace std;
int a[9] = {0,2,3,4,5,6,7,8,9};
int b[7];
int a1,b1,c1;

void Print()//判读是否满足加法式
{
    a1 = b[0]*1000+b[1]*100+b[2]*10+b[3];//a,b,c,d
    b1 = 1000+b[4]*100+b[5]*10+b[1];//1,f,e,b
    c1 = 10000+b[4]*1000+b[2]*100+b[1]*10+b[6];
    if(c1 == (a1+b1))
    {
        cout<<a1<<endl;
        cout<<b1<<endl;
        cout<<c1<<endl;
        cout<<endl;
    }
}

void Add(int m,int n)//七个数排列
{
    if(m == 0)
    {
        if(b[0]==8||b[0] == 9)
        {
        Print();
        }
        return ;
    }
    else
    {
        int i,t;
        for(i=0;i<=m;i++)
        {
            t = b[i];
            b[i] = b[m];
            b[m] = t;
            Add(m-1,n);
            t = b[i];
            b[i] = b[m];
            b[m] = t;
        }
    }
}


void fun(int m,int n)//九个数组合
{
    int i,j;
    for(i=m;i>=n;i--)
    {
        b[n-1] = a[i-1];
        if(n>1)
        {
            fun(i-1,n-1);
        }
        else
        {
            Add(6,7);
            //Print();
        }
    }
}
int main()
{
    memset(b,0,sizeof(b));
    fun(9,7);//十个里面取七个
    return 0;
}

结果

9567
1085
10652

猜你喜欢

转载自www.cnblogs.com/zkw123/p/10583349.html