蓝桥杯 三羊献瑞

题目:


三羊献瑞

观察下面的加法算式:

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

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

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

代码:

#include <iostream>
#include<stdio.h>

using namespace std;

int main(int argc, char *argv[])
{
    int a,b,c,d,e,f,g,h;//分别代表:祥,瑞,生,辉,三,羊,献,气
    int sum1=0,sum2=0,sum=0;//分表代表: 祥 瑞 生 辉,三 羊 献 瑞, 三 羊 生 瑞 气

    for(a=1;a<=9;a++)//从1开始,因为数字首位不能为0
        for(b=0;b<=9;b++)
            for(c=0;c<=9;c++)
                for(d=0;d<=9;d++)
                    for(e=1;e<=9;e++)//从1开始,因为数字首位不能为0
                        for(f=0;f<=9;f++)
                            for(g=0;g<=9;g++)
                                for(h=0;h<=9;h++)
                                {
                                    if(a!=b&&a!=c&&a!=d&&a!=e&&a!=f&&a!=g&&a!=h
                                       && b!=c&&b!=d&&b!=e&&b!=f&&b!=g&&b!=h &&
                                       c!=d&&c!=e&&c!=f&&c!=g&&c!=h && d!=e&&d!=f
                                       &&d!=g&&d!=h && e!=f&&e!=g&&e!=h && f!=g&&f!=h
                                       && g!=h)
                                    {
                                        sum1=a*1000 + b*100 + c*10 + d;
                                        sum2=e*1000 + f*100 + g*10 + b;

                                        sum = e*10000 + f*1000 + c*100 + b*10 + h;

                                        if(sum1+sum2 == sum)
                                        {
                                            printf("%d%d%d%d",e,f,g,b);
                                        }
                                    }
                                }
    cout<<endl;
    return 0;
}

代码:

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

int main() {
    int a[10];
    for (int i = 0; i < 10; i++) a[i] = i;

    do {
        if (!a[2] || !a[6]) continue;
        int x =              a[2]*1000 + a[3]*100 + a[4]*10 + a[5];
        int y =              a[6]*1000 + a[7]*100 + a[8]*10 + a[3];
        int z = a[6]*10000 + a[7]*1000 + a[4]*100 + a[3]*10 + a[9];
        if (x + y == z) printf("%d + %d = %d\n", x, y, z);
    } while (next_permutation(a, a+10));

    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值