求助,莫名其妙的编译错误,请教到底该怎么办
#include<bits/stdc++.h>
using namespace std;
struct integer {
int p[205],len;
integer(){
memset(p,0,sizeof(p));
len=0;
}
}tb[1000][5000],One;
integer operator+(integer A,integer B){
integer C;
int i=1,f=0;
for(;i<=max(A.len,B.len)||f;i++){
C.p[i]=f+A.p[i]+B.p[i];
f=C.p[i]/10;
C.p[i]%=10;
}
C.len=--i;
return C;
}
void print(integer A){
for(int i=A.len;i;i--)cout<<A.p[i];
puts("");
}
integer C(int n,int m){
if(m==0)return One;
if(n==m)return One;
if(!tb[n][m].len)tb[n][m]=(C(n-1,m)+C(n-1,m-1));
return tb[n][m];
}
int main()
{
One.len=1,One.p[1]=1;
int K,W;
cin>>K>>W;
int n=(W+K-1)/K;
int li=W%K?(1<<W%K)-1:(1<<K)-1;
integer ans;
for(int i=1;i<=li;i++){
int opt=(1<<K)-1-i;
if(n-1>opt)break;
ans=(ans+C(opt,n-1));
}
for(int i=n-1;i>=2;i--){
if((1<<K)-1<i)continue;
ans=(ans+C((1<<K)-1,i));
}
print(ans);
return 0;
}