AC code
2023-01-15 11:30:31
发布于:山东
25阅读
0回复
0点赞
题解仅供参考,不可以抄袭a
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e7+10;
int n,m;
int arr[300][300][200],res[200];
void sum(int x[N],int y[N],int z[N])
{
int qwq=0,awa=0;
z[0]=max(x[0],y[0]);
for(int i=1;i<=z[0];i++)
{
int t=x[i]+y[i]+qwq;
awa=t%10;
qwq=t/10;
z[i]=awa;
}
if(qwq!=0)
{
z[0]++;
z[z[0]]=qwq;
}
}
signed main()
{
cin>>n>>m;
int maxn=pow(2,n);
for(int i=1;i<=maxn;i++)
{
for(int j=1;j<=i;j++)
{
if(j==1 or j==i)
{
arr[i][j][0]=1,arr[i][j][1]=1;
}
else
{
sum(arr[i-1][j],arr[i-1][j-1],arr[i][j]);
}
}
}
int a=m/n,b=m-a*n;
int maxm=pow(2,b);
for(int i=2;i<=a and i<maxn;i++)
{
sum(arr[maxn][i+1],res,res);
}
for(int i=1;i<=maxm-1 and a+i<maxn;i++)
{
sum(arr[maxn-i][a+1],res,res);
}
for(int i=res[0];i>=1;i--)
{
cout<<res[i];
}
return 0;
}
这里空空如也
有帮助,赞一个