蓝桥杯 神奇算式
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;
}
由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;
}