MLE 0 求助
查看原帖
MLE 0 求助
556362
Unnamed114514楼主2022/7/12 16:30
#include<bits/stdc++.h>
using namespace std;
int a[205],b[205],c[205],k,w;
string C[1005][30005],ans; 
inline string add(string s1,string s2){
    memset(a,0,sizeof(a));
    memset(b,0,sizeof(b));
    memset(c,0,sizeof(c));
    int l1=s1.size(),l2=s2.size();
    for(int i=1;i<=l1;i++)
        a[i]=s1[l1-i]-'0';
    for(int i=1;i<=l2;i++)
        b[i]=s2[l2-i]-'0';
    int k=1;
    while(k<=max(l1,l2)||c[k]){
        c[k]+=a[k]+b[k];
        c[k+1]+=c[k]/10;
        c[k]%=10;
        ++k;
    }
    string s="\0";
    for(int i=k-1;i;i--)
        s+=char(c[i]+'0');
    return s;
}
int main(){
	cin>>k>>w;
	C[0][0]="1";
	for(int i=1;i<(1<<k);++i) 
		C[i][0]=C[i][i]="1";
	for(int i=2;i<(1<<k);++i) 
		for(int j=1;j<i;++j) 
			C[i][j]=add(C[i-1][j],C[i-1][j-1]);
	ans="0";
	for(int i=2;i<=w/k;++i) 
		ans=add(ans,C[(1<<k)-1][i]);
	if(w%k) 
		for(int i=1;i<=(1<<(w%k))-1;++i) 
			ans=add(ans,C[(1<<k)-i-1][w/k]); 
	cout<<ans<<endl;
	return 0;
}
2022/7/12 16:30
加载中...