#pragma GCC optimize(3) #include <bits/stdc++.h> #define debug(x) cout<<#x<<":"<<x<<endl; #define dl(x) printf("%lld\n",x); #define di(x) printf("%d\n",x); #define _CRT_SECURE_NO_WARNINGS #define pb push_back #define mp make_pair #define all(x) (x).begin(),(x).end() #define fi first #define se second #define SZ(x) ((int)(x).size()) using namespace std; typedef long long ll; typedef unsigned long long ull; typedef pair<int, int> PII; typedef vector<int> VI; const int INF = 0x3f3f3f3f; const int N = 2e5 + 10; const ll mod = 1000000007; const double eps = 1e-9; const double PI = acos(-1); template<typename T>inline void read(T &a) { char c = getchar(); T x = 0, f = 1; while (!isdigit(c)) {if (c == '-')f = -1; c = getchar();} while (isdigit(c)) {x = (x << 1) + (x << 3) + c - '0'; c = getchar();} a = f * x; } int gcd(int a, int b) {return (b > 0) ? gcd(b, a % b) : a;} vector<int> p; const int M = 15; int all[M], ok[M] , n = 8 ; void dfs(int u) { if(u == n) { int k = 0 ; for(int i = 0 ; i < n ; i++) { k = k * 10 + all[i] ; } p.push_back(k) ; return ; } for(int i = 1 ; i <= n ; i++) { if(ok[i] == 0) { all[u] = i ; ok[i] = 1; dfs(u + 1); ok[i] = 0; } } } int main() { dfs(0); int k; cin>>k; int res =0 ; for(int i = 0 ; i <p.size() ; i ++ ) { if(p[i] % k == 0 ) { res ++ ; } } cout<<res<<endl; return 0; } /** * ┏┓ ┏┓+ + * ┏┛┻━━━┛┻┓ + + * ┃ ┃ * ┃ ━ ┃ ++ + + + * ████━████+ * ◥██◤ ◥██◤ + * ┃ ┻ ┃ * ┃ ┃ + + * ┗━┓ ┏━┛ * ┃ ┃ + + + +Code is far away from * ┃ ┃ + bug with the animal protecting * ┃ ┗━━━┓ 神兽保佑,代码无bug * ┃ ┣┓ * ┃ ┏┛ * ┗┓┓┏━┳┓┏┛ + + + + * ┃┫┫ ┃┫┫ * ┗┻┛ ┗┻┛+ + + + */