4633533_ac_0ms_488k.cpp
来自「部分PKU上的源码」· C++ 代码 · 共 45 行
CPP
45 行
#include<iostream>
using namespace std;
__int64 test[2005][15];
int g[2005];
int n,m;
void getg(int n,int m)
{
for(int count=m;count>=1;count--)
{
if(count*2<2005) g[count]=g[count*2]+1;
else g[count]=1;
}
}
void slove(int n,int m)
{
for(int i=m;i>=1;i--)
{
for(int j=1;j<=g[i]&&j<=n;j++)
{
if(j==1) test[i][j]=test[i+1][j]+(__int64)1;
else
{
test[i][j]=test[i+1][j];
test[i][j]+=test[i*2][j-1];
}
//printf("%I64d ",test[i][j]);
}
//printf("\n");
}
}
int main()
{
int testnumber;
cin>>testnumber;
for(int count=1;count<=testnumber;count++)
{
memset(g,0,sizeof(g));
memset(test,(__int64)0,sizeof(test));
cin>>n>>m;
getg(n,m);
slove(n,m);
printf("Case %d: n = %d, m = %d, # lists = %I64d\n",count,n,m,test[1][n]);
}
return 0;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?