WA on #4 #7 #8 #10 悬关
查看原帖
WA on #4 #7 #8 #10 悬关
1381793
Betty_yyyy楼主2025/7/31 17:42
#include <bits/stdc++.h>
#define int unsigned long long
using namespace std;

int fac[51];
vector <int> cont(10,0);

void fact() {
	fac[0]=1;
	for (int i=1; i<=50; ++i) {
		fac[i]=fac[i-1]*i;
	}
}

int per() {
	int con=0;
	for (int v : cont) {
		con+=v;
	}
	int res=fac[con];
	for (int v : cont) {
		res/=fac[v];
	}
	return res;
}

int solve(string s) {
	int len=s.size();
	for (char c : s) {
		cont[c-'0']++;
	}
	fact();
	int res=0;
	for (int i=0; i<len; ++i) {
		int d=s[i]-'0';
		for (int c=0; c<d; ++c) {
			if (cont[c]==0) {
				continue;
			}
			cont[c]--;
			res+=per();
			cont[c]++;
		}
		cont[d]--;
		if (cont[d]<0) {
			break;
		}
	}
	return res;
}

signed main() {
	string n;
	cin>>n;
	cout<<solve(n);
	return 0;
}
2025/7/31 17:42
加载中...