由4个不同的数字,组成的一个乘法算式,它们的乘积仍然由这4个数字
组成。
比如:
210 x 6 = 1260
8 x 473 = 3784
27 x 81 = 2187
都符合要求。
如果满足乘法交换律的算式算作同一种情况,那么,包含上边已列出的3种情况,
一共有多少种
满足要求的算式。
请填写该数字,通过浏览器提交答案,不要填写多余内容(例如:列出所有算式)。
答案:12
#include<stdio.h>
#include<stdlib.h>
int main(){
int a[10],b[10];
int i,j,k,flag;
int num,sum=0;
for(i=1;i<10;i++){
for(j=100;j<1000;j++){
if(i*j<1000)
continue;
for(k=0;k<10;k++){
a[k]=b[k]=0;
}
num=i*j;
while(num){
b[num%10]++;
num/=10;
}
k=j;
while(k){
a[k%10]++;
k/=10;
}
a[i]++;
flag=1;
for(k=0;k<10;k++){
if(a[k]!=b[k]||(a[k]==b[k]&&a[k]==2)){
flag=0;
break;
}
}
if(flag){
sum++;
}
}
}
sum*=2;
for(i=10;i<100;i++){
for(j=10;j<100;j++){
if(i*j<1000)
continue;
for(k=0;k<10;k++){
a[k]=b[k]=0;
}
num=i*j;
while(num){
b[num%10]++;
num/=10;
}
k=j;
while(k){
a[k%10]++;
k/=10;
}
k=i;
while(k){
a[k%10]++;
k/=10;
}
flag=1;
for(k=0;k<10;k++){
if(a[k]!=b[k]||(a[k]==b[k]&&a[k]==2)){
flag=0;
break;
}
}
if(flag){
sum++;
}
}
}
printf("%d\n",sum/2);
return 0;
}