#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int num[10];
int is_diff(int a, int b)
{
memset(num, 0, sizeof(num));
if(b<10000)
num[0] = 1;
while(a)
{
num[a%10] = 1;
a /= 10;
}
while(b)
{
num[b%10] = 1;
b /= 10;
}
int sum = 0;
for(int i= 0; i<10; i++)
{
sum += num[i];
}
// cout << sum;
return (sum == 10);
}
int main(int argc, char** argv) {
int n;
int T;
while((cin >> n)&&n)
{
if(T++)
cout <<"\n";
int flag = 0;
for(int i = 1234; i < 98766; i++)
{
int another = i*n;
if(another<98766)
{
if(is_diff(another, i))
{
printf("%5d / %05d = %d\n", another,i,n);
flag = 1;
}
}
}
if(!flag)
printf("There are no solutions for %d.\n", n);
// else
// cout << "\n";
}
return 0;
}
分析:暴力求解法,判断限定被除数的循环范围,再判断十个数是否各不相同
掌握:暴力求解法
第一次:8.18