简单的题目,枚举除数,让除数和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; }