1 // 纯纯的暴力 挂了。
2 #include
3 #include <string.h>
4 #include
5 using namespace std;
6
7 int vis[10], visall[10];
8
9 bool check(int num) {
10 while(num) {
11 int temp = num % 10;
12 if (vis[temp]) return false;
13 if (temp == 0) return false;
14 vis[temp]++;
15 num /= 10;
16 }
17 return true;
18 }
19
20 bool checkAll() {
21 for (int i=1; i<10; ++i) {
22 if (vis[i] != 1) return false;
23 }
24 return true;
25 }
26
27 void copyNum(int a[], int b[]) {
28 for (int i=1; i<10; ++i) {
29 a[i] = b[i];
30 }
31 }
32
33 int main() {
34 int n;
35 while(cin >> n) {
36 memset(vis, 0, sizeof(vis));
37 memset(visall, 0, sizeof(visall));
38 int ans = 0;
39
40 for (int l=1; ll) {
41 memset(vis, 0, sizeof(vis));
42 if (!check(l)) continue;
43 copyNum(visall, vis);
44
45 for (int down=1; down<100000; ++down) {
46 int up = (n-l) * down;
47 if (down > up) continue;
48 if (up % down) continue;
49 copyNum(vis, visall);
50 if (!check(down) || !check(up)) {
51 continue;
52 }
53 if (checkAll()) {
54 //cout <
55 ans++;
56 }
57 }
58 }
59
60 cout < endl;
61 }
62 return 0;
63 }