神秘的神秘 • 16小时前
using namespace std; long long a[10]; long long c[51][51]; string s;
int main() {
cin >> s;
long long w = s.size();
for (long long i = 0; i < w; i++) {
a[s[i] - '0']++;
}
for (long long i = 0; i <= w; i++) {
c[i][i] = 1;
c[i][0] = 1;
for (long long j = 1; j < i; j++) {
c[i][j] = c[i - 1][j - 1] + c[i - 1][j];
}
}
long long m = 0;
for (long long i = 0; i < w; i++) {
for (long long j = 0; j < s[i] - '0'; j++) {
if (a[j] == 0) {
continue;
}
a[j]--;
long long d = w - i - 1;
long long z = 1;
for (long long k = 0; k <= 9; k++) {
z *= c[d][a[k]];
d -= a[k];
}
m += z;
a[j]++;
}
a[s[i] - '0']--;
}
cout << m;
return 0;
}
评论:
请先登录,才能进行评论