Description
输入正整数n,按从小到大的顺序输出所有形如abcde/fghij=n的表达式,其中a~j各代表0~9中的一个数字 除了0可以重复外,其它数字不能重复,2<=n<=90000
输入格式
多case,每行一个数字,最后一个数字是0
输出格式
除了最后一行0不用处理, 其它每个case,按被除数由小到大输出所有满足等式的情况 注:如果没有满足条件的等式,该case结束后,也需要输出一个空行 两个case之间用一个空行分隔
输入样例
44 666 6666 20000 0
描述:题目思路,除数/被除数=n,可以看作是:i*n / i=n;因此我们可以转换思路为记录i*n和i的各位上的数是否重复来进行输出。
所以设置一个flag[11]来记录0-9的重复次数,如果flag[ ]>1,则return 0。否则就输出。
重点:记得i要初始化!
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
int dev(int k,int j)
{
int flag[11]={0};
while(k)
{
flag[k%10]++;
k/=10;
}
while(j)
{
flag[j%10]++;
j/=10;
}
for(int i=1;i<=10;i++)
{
if(flag[i]>1)
return 0;
}
return 1;
}
int main()
{
int n;
cin>>n;
while(n)
{
int i=1;
while(i*n<=99999)
{
if(dev(i*n,i))
printf("%05d/%05d=%d\n",i*n,i,n);
i++;
}
cout<<endl;
cin>>n;
}
return 0;
}