一条大一的c语言题,捞一捞大一小朋友吧

A、B、C、D、E均为0~9中任意一数,各不相同。它们为何值时如下等式成立? ABCD * E = DCBA 要求用函数实现。

img

#include <stdio.h>
void f(int t[])
{
    int a,b,c,d,e;
    for( a=0; a<10  ; a++)
        for( b=0; b<10 ; b++)
            for( c=0; c<10 ; c++)
                for( d=0; d<10 ; d++)
                    for( e=0; e<10 ; e++)
                    {
                        if(a!=b&&a!=c&&a!=d&&a!=e&&b!=c&&b!=d&&b!=e&&c!=d&&c!=e&&d!=e)
                        {
                        int t1=(1000*a+100*b+10*c+d)*e;
                        int t2=d*1000+c*100+b*10+a;
                        if(t1==t2)
                            t[0]=a,t[1]=b,t[2]=c,t[3]=d,t[4]=e;
                        }
                        
                    }
}

int main()
{
    int t[5];
    f(t);
    printf("A:%d  B:%d  C:%d  D:%d  E:%d\n",t[0],t[1],t[2],t[3],t[4]);
    printf("\n");
    return 0;
}

#include <stdio.h>

void main()
{
    /*
    ABCD * E = DCBA
    */
    int a[4];
    for (int ABCD = 1000; ABCD <= 9999; ABCD++)
    {
        int A = ABCD / 1000;
        int B = ABCD / 100 % 10;
        int C = ABCD / 10 % 10;
        int D = ABCD % 10;
        if (A==B||B==C||C==D||A==D)
        {
            continue;
        }
        int DCBA = D * 1000 + C * 100 + B * 10 + A;
        for (int E = 0; E <= 9; E++)
        {
            if (E == B || E == C || E == D || E == A)
            {
                continue;
            }
            if (ABCD * E == DCBA)
            {
                printf("%d*%d=%d\n",ABCD,E,DCBA);
            }
        }
    }
    
}

最简单暴力的方式就是5层for循环遍历。


#include <stdio.h>
int main()
{
    int a,b,c,d,e;
    int t,k;
    for (a=1;a<=9;a++)//这里a从1开始,第一位不为0
    {
        for (b=0;b<=9;b++)
        {
            for (c=0;c<=9;c++)
            {
                for (d=1;d<=9;d++)//这里d从1开始,结果的第一位不为0
                {
                    for(e=1;e<=9;e++) //e等于0的时候,应够都满足,所以这里让e从1开始
                    {
                        t = a*1000+b*100+c*10+d;
                        k = d*1000+c*100+b*10+a;
                        if(t*e == k)
                            printf("a=%d,b=%d,c=%d,d=%d,e=%d\n",a,b,c,d,e);
                    }
                }
            }
        }
    }
    return 0;
}