蓝桥杯题解2
假设 a b c d e 代表1~9不同的5个数字(注意是各不相同的数字,且不含0)能满足形如: ab * cde = adb * ce 这样的算式一共有多少种呢?
如:36 * 495 = 396 * 45 = 17820
我的代码如下:
#include<stdio.h>//求符合36*495=396*45的列式总数
void main()
{
int i,t,m,q,j=0;
int a[5];//定义一个有数组用于分别存放5个个位数
for(i=10000;i<=99999;i++)//利用循环在所有五位数中寻找符合条件的整数i
{
t=i;
m=t%10;
q=4;
while(t>0)//利用循环分别求出组成整数i的5个个位数;
{
a[q]=m;
t=(t-m)/10;
m=t%10;
q--;
}
if(a[0]!=0&&a[1]!=0&&a[2]!=0&&a[3]!=0&&a[4]!=0&&a[0]!=a[1]&&a[0]!=a[2]&&a[0]!=a[3]&&a[0]!=a[4]&&a[1]!=a[2]&&a[1]!=a[3]&&a[1]!=a[4]&&a[2]!=a[3]&&a[2]!=a[4]&&a[3]!=a[4])//利用if语句将5个个位数中含0的和两两相等的整数i剔除
{
if((10*a[0]+a[1])*(100*a[2]+10*a[3]+a[4])==(100*a[0]+10*a[3]+a[1])*(10*a[2]+a[4])) //利用if语句将符合ab * cde = adb * ce条件的整数i找出
{
j=j+1;//计数器
printf("%d\n",i);//打印符合条件的整数
}
}
}
printf("符合条件的列式有:%d个\n",j);//打印结果
}
请分享,如有更简洁的方法,请展出共享。