输入正整数n,输出abcde / fghij = n 的表示式,abcdefghij时0到9的一个排列
思路:
枚举出所有除数的可能,从0到9的fghij ,在用都不相等的fghij组成的数*n,就是被除数,在将这个被除数每一位分开,变成abcde,满足所有数之和为45且
互不相等,就是结果
代码:
#include <stdio.h>
main()
{
int a,b,c,d,e,n,s;
int f,g,h,i,j;
scanf("%d",&n);
//枚举除数
for (f=0;f<10;f++)
for (g=0;g<10;g++)
for (h=0;h<10;h++)
for (i=0;i<10;i++)
for (j=0;j<10;j++)
{
//判断fghij不等
if (f!=g&&f!=h&&f!=i&&f!=j&&g!=h&&g!=i&&g!=j&&h!=i&&h!=j&&i!=j)
{
s=(f*10000+g*1000+h*100+i*10+j) * n; //s为abcde组成的数字
//将abcde从s中分割出来
a=s/10000;
b=s/1000%10;
c=s/100%10;
d=s/10%10;
e=s%10;
//判断abcde fghij全部都不相等 且之和为45
if ((a+b+c+d+e+f+g+h+i+j==45)
&&a!=b&&a!=c&&a!=d&&a!=e&&b!=c&&b!=d&&b!=e&&c!=d&&c!=e&&d!=e&&a!=f
&&a!=g&&a!=h&&a!=i&&a!=j
&&b!=f&&b!=g&&b!=h&&b!=i&&b!=j
&&c!=f&&c!=g&&c!=h&&c!=i&&c!=j
&&d!=f&&d!=g&&d!=h&&d!=i&&d!=j
&&e!=f&&e!=g&&e!=h&&e!=i&&e!=j)
{
printf("%d%d%d%d%d / %d%d%d%d%d = %d\n",a,b,c,d,e,f,g,h,i,j,n);
}
}
}
}