uva12063数位dp

时间:2021-11-09 04:56:51

辣鸡军训毁我青春!!!

因为在军训,导致很长时间都只能看书yy题目,而不能溜到机房鏼题

于是在猫大的帮助下我发现这道习题是数位dp

然后想起之前讲dp的时候一直在补作业所以没怎么写,然后就试了试

果然dp的代码比数据结构题短到不知道哪里去了,而且1A,爽啊

 #include <cstdio>
int t=,T,n,m;
long long dp[][][];
int main()
{
for(scanf("%d",&T);t<=T;t++)
{
scanf("%d%d",&n,&m);
printf("Case %d: ",t);
if((n&)||(!m))
{
printf("0\n");
continue;
}
for(int i=;i<=n;i++)
for(int j=;j<m;j++)
for(int k=;k<=*n;k++)
dp[i][j][k]=;
dp[][%m][+n]=;
for(int i=;i<=n;i++)
for(int j=;j<m;j++)
for(int k=;k<=*n;k++)
{
if(k>)
dp[i][j*%m][k-]+=dp[i-][j][k];
if(k<*n)
dp[i][(j*+)%m][k+]+=dp[i-][j][k];
}
printf("%lld\n",dp[n][][n]);
}
return ;
}

良心样例,本来我没开longlong的,样例都已经炸int了就改掉了