60分求调!!!(有关注)
查看原帖
60分求调!!!(有关注)
1343286
Mincraft_Player楼主2025/1/4 20:15
#include<cstdio>
typedef long long ll;
int n,m,r,ans,a[35],b[35];
void dfs(int k,int cnt,int now){
	if(k>r){
		if(cnt<=m)ans++;
		return;
	}
	if(cnt>m)return;
	for(int i=now+1;i<=n;i++)
		dfs(k+1,cnt+a[i],i);
}
ll fac(int x){
	int pro=1;
	for(int i=2;i<=x;i++)
		pro*=i;
	return pro;
}
ll A(int x,int y){
	int pro=1;
	for(int i=x;i>x-y;i--)
		pro*=i;
	return pro;
}
ll C(int x,int y){
	return A(x,y)/fac(y);
}
int main(){
	scanf("%d%d%d",&n,&r,&m);
	for(int i=1;i<=n;i++)
		scanf("%d",&a[i]);
	dfs(1,0,0);
	printf("%d\n",C(n,r)-ans);
	return 0;
}
2025/1/4 20:15
加载中...