简单的题目,暴力枚举可以过。只不过我第一次用的是五重循环枚举一直WR,2到79 的答案都对,就是不过,不知道为毛。。后来改用直接枚举其中一个数。
代码:
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int ans[10];
bool flag;
int cheak(int x, int y)
{
memset(ans, 0, sizeof(ans));
if(y > 98765)
return 0;
if(x < 10000)
ans[0] = 1;
while(x)
{
ans[x % 10] = 1;
x /= 10;
}
while(y)
{
ans[y % 10] = 1;
y /= 10;
}
int sum = 0;
for(int i = 0; i < 10; i++)
sum += ans[i];
return (sum == 10);
}
int main()
{
// freopen("1.txt", "r", stdin);
int n, t = 0, count;
while(cin >> n)
{
count = 0;
if(!n)
break;
if(t++)
cout << endl;
for(int i = 1234; i < 100000; i++)
{
if(cheak(i, i * n))
{
printf("%05d / %05d = %d\n", i * n, i, n);
count++;
}
}
if(!count)
cout << "There are no solutions for " << n << "." << endl;
}
return 0;
}