您的位置:首页 > 其它

蓝桥杯 第五届 C组A 神奇算式

2017-02-12 13:08 288 查看
由4个不同的数字,组成的一个乘法算式,它们的乘积仍然由这4个数字

组成。

比如:


210 x 6 = 1260

8 x 473 = 3784

27 x 81 = 2187

都符合要求。

如果满足乘法交换律的算式算作同一种情况,那么,包含上边已列出的3种情况,
一共有多少种
满足要求的算式。

请填写该数字,通过浏览器提交答案,不要填写多余内容(例如:列出所有算式)。


答案:15

#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]){
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]){
flag=0;
break;
}
}
if(flag){
sum++;
}

}
}
printf("%d\n",sum/2);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: