输入正整数n,按从小到大的顺序输出所有形如abcde/fghij=n的表达式,其中a-j恰好为数字0-9的一个排列,2<=n<=79。
样例输入:62
样例输出:79546/01283=62
:94736/01528=62
思路:枚举fghij 求出abcde,枚举量从10!=3628800不到10000. 实现的时候,开始只判断了abcde和fghij它们之间互不相等,所有一直不出样例、后来发现了a-j互不相等加上条件,即枚举出来。 上代码。
至于从小到大顺序。枚举时候就是从小到大的。所以直接顺序输出就OK了。
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
int a,b,c,d,e;
int i,j,k,l,m;
int n,s1,s;
while(scanf("%d",&n)!=EOF)
{
for( i=0; i<10; i++)
{
for( j=0; j<10; j++)
{
for( k=0; k<10; k++)
{
for( l=0; l<10; l++)
{
for(m=0; m<10; m++)
{
if(i!=j&&i!=k&&i!=l&&i!=m&&j!=k&&j!=l&&j!=m&&k!=l&&k!=m&&l!=m)
{
s1=10000*i+1000*j+100*k+10*l+m;
s=s1*n;
a=s/10000;
b=s/1000%10;
c=s/100%10;
d=s/10%10;
e=s%10;
if(a<10&&e<10)
{
if(a!=b&&a!=c&&a!=d&&a!=e&&a!=i&&a!=j&&a!=k&&a!=l&&a!=m&&b!=c&&b!=d&&b!=e&&b!=i&&b!=j&&b!=k&&b!=l&&b!=m&&c!=d&&c!=e&&c!=i&&c!=j&&c!=k&&c!=l&&c!=m&&d!=e&&d!=i&&d!=j&&d!=k&&d!=l&&d!=m&&e!=i&&e!=j&&e!=k&&e!=l&&e!=m)
{
printf("%d %d %d %d %d/%d %d %d %d %d=%d\n",a,b,c,d,e,i,j,k,l,m,n);
}
}
}
}
}
}
}
}
}
return 0;
}