您的位置:首页 > 其它

蓝桥杯 神奇算式

2017-03-15 19:57 239 查看
标题:神奇算式

    由4个不同的数字,组成的一个乘法算式,它们的乘积仍然由这4个数字组成。

    比如: 
210 x 6 = 1260 
8 x 473 = 3784
27 x 81 = 2187 

    都符合要求。

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

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

#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
char s1[6],s2[4],s3[4];//s1数组大小定为6,是因为999*999=998001是6位数
int main()
{
int i,j,k;
int sum=0;
int count=0;
for(i=1;i<=999;i++)
for(j=1;j<=999;j++)
{
sum=i*j;
if(sum>999&&sum<10000&&i<j)//比较i,j是为了满足乘法交换律的算式算作同一种情况
{
sprintf(s1,"%d",sum);//把乘积转换为字符串
sort(s1,s1+4);
for(k=1;k<4;k++)
if(s1[k-1]==s1[k])//对排序后的字符串比较,看是否有相同数字
break;
if(k==4)//没有相同数字时
{
sprintf(s2,"%d",i);
sprintf(s3,"%d",j);
strcat(s2,s3);
sort(s2,s2+4);
if(!strcmp(s1,s2))
{
count++;
//printf("%d*%d=%d\n",i,j,sum);
}
}
}
}
printf("%d",count);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: