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