clear;clc;A=perms(1:9);
A=A((1000*A(:,1)+100*A(:,2)+10*A(:,3)+A(:,4)).*A(:,5)==1000*A(:,6)+100*A(:,7)+10*A(:,8)+A(:,9),:);
disp([num2str(1000*A(:,1)+100*A(:,2)+10*A(:,3)+A(:,4)) repmat('*',size(A,1),1) num2str(A(:,5)) repmat('=',size(A,1),1) num2str(1000*A(:,6)+100*A(:,7)+10*A(:,8)+A(:,9))])
若用C:
#include <stdio.h>
#include <conio.h>
#include <malloc.h>
main()
{
int i,j,n=9,postion;
int *a,*flag,*p;
long m=0,fun_m=1;
system("cls");
a=(int *)calloc(n-1,sizeof(int));
flag=(int *)calloc(n,sizeof(int));
p=(int *)calloc(n,sizeof(int));
if (!a&&!flag&&!p)
{
printf("calloc error:\nPress any key exit:");
getch();
exit(0);
}
for (i=0;i<n;i++,fun_m*=i)
a[i]=0;
for (m=0;m<fun_m;m++)
{
for (i=2;i<=n;i++)
{
a[n-i]=(a[n-i]+1)%i;
if (a[n-i])
break;
}
for (i=0;i<n;i++)
flag[i]=0;
for (i=n;i>1;i--)
{
postion=n-1-a[n-i];
for (j=n-1;j>=postion;j--)
if (flag[j])
postion--;
p[postion]=i;
flag[postion]=1;
}
for (i=0;i<n;i++)
if (!flag[i])
p[i]=1;
/*以上产生全排列的一个数*/
if ((long)(p[0]*1000+p[1]*100+p[2]*10+p[3])*p[4]==p[5]*1000+p[6]*100+p[7]*10+p[8])
{
for (i=0;i<4;i++)
printf("%d",p[i]);
printf("*%d=",p[4]);
for (i=5;i<9;i++)
printf("%d",p[i]);
printf("\n");
}
}
getch();
}
温馨提示:内容为网友见解,仅供参考