Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define int int64_t
- const int inf = 2e18;
- const int mod = 1e9 + 7;
- int F[10];
- int f[10];
- int ans = 0;
- int fact[20];
- void rec(int i) {
- if (i == 10) {
- int sum = 0;
- for (int j = 0; j < 10; j++) {
- sum += f[j];
- }
- int cur = fact[sum];
- for (int j = 0; j < 10; j++) {
- cur /= fact[f[j]];
- }
- ans += cur;
- if (f[0] > 0) {
- cur = fact[sum - 1];
- f[0]--;
- for (int j = 0; j < 10; j++) {
- cur /= fact[f[j]];
- }
- f[0]++;
- ans -= cur;
- }
- return;
- }
- if (F[i] == 0) {
- rec(i + 1);
- return;
- }
- for (int j = 1; j <= F[i]; j++) {
- f[i] = j;
- rec(i + 1);
- }
- }
- int32_t main() {
- ios_base::sync_with_stdio(0);
- cin.tie(0); cout.tie(0);
- fact[0] = 1;
- for (int i = 1; i < 20; i++) {
- fact[i] = fact[i - 1] * i;
- }
- int n;
- cin >> n;
- while (n) {
- F[n % 10]++;
- n /= 10;
- }
- rec(0);
- cout << ans;
- }
Advertisement
Add Comment
Please, Sign In to add comment