简单的题目,枚举除数,让除数和n相乘之后,判断被除数和除数是否全部用到了0-9这十个数字即可。具体实现见如下代码:
#include<iostream>
#include<vector>
#include<string>
#include<set>
#include<stack>
#include<queue>
#include<map>
#include<algorithm>
#include<cmath>
#include<iomanip>
#include<cstring>
#include<sstream>
#include<cstdio>
#include<deque>
using namespace std;
bool exist(int a,int b){
vector<int> num(10,0);
if (a < 10000) num[0] = 1;
while (a){
int t = a % 10;
num[t] = 1;
a = a / 10;
}
while (b){
int t = b % 10;
num[t] = 1;
b = b / 10;
}
int total = 0;
for (int i = 0; i < 10; i++) total += num[i];
return total == 10;
}
int main(){
int n;
int Case = 0;
while (cin >> n){
if (n == 0) break;
if (Case) cout << endl;
Case++;
int amount = 0;
for (int i = 1234; i*n < 100000; i++){
if (exist(i, i*n)){
cout << i*n << " / " << setw(5)<<setfill('0') <<i<< " = " << n << endl;
amount++;
}
}
if (amount == 0) cout << "There are no solutions for "<<n<<"." << endl;
}
return 0;
}