https://codeforces.com/problemset/problem/991/E
假想一下,如果我们知道m序列的长度是不是可以计算数量
这个好算,但是好像多了一点数,因为不能有前导零,所以我们要减去有前导零的部分
最后得到
那么我们只需要枚举数量即可,考虑数据范围(0-9)
dfs一下,枚举每一次的(0-9)的数量即可
// Problem: E. Bus Number
// Contest: Codeforces - Codeforces Round 491 (Div. 2)
// URL: https://codeforces.com/problemset/problem/991/E
// Memory Limit: 256 MB
// Time Limit: 1000 ms
//
// Powered by CP Editor (https://cpeditor.org)#include<iostream>
using namespace std;
typedef long long ll;
ll c[11],f[20],t[20];
ll ans=0;
void init(){f[0]=1;for(int i=1;i<=19;i++){f[i]=f[i-1]*i;}
}
void dfs(int x){if(x==10){int sum=0;for(int i=0;i<=9;i++){sum+=t[i];}ll tt=f[sum];for(int i=0;i<=9;i++){tt/=f[t[i]];}if(t[0]){///tt-=(tt*t[0]/sum);}ans+=tt;return;} for(int i=1;i<=c[x];i++){t[x]=i; dfs(x+1);}if(!c[x]){dfs(x+1);}
}
int main(){init();string n;cin>>n;for(int i=0;i<(int)n.size();i++){c[n[i]-'0']++;}dfs(0);cout<<ans<<'\n';return 0;
}