您的位置:首页 > 其它

URAL 1009 K-based numbers(DP递推)

2014-04-04 21:14 375 查看
点我看题目

题意 : K进制的N位数,不能有前导零,这N位数不能有连续的两个0在里边,问满足上述条件的数有多少个。

思路 : ch[i]代表着K进制的 i 位数,不含两个连续的0的个数。

当第 i 位为0时,那么第i-1位不为0有(K-1)种放法,(k-1)*f[i-2]

当第 i-1 位为0时,第 i 位有(k-1)种放法,(k-1)*f[i-1]

#include <stdio.h>
int main()
{
long long ch[101];
int m,n;
while(~scanf("%d %d",&m,&n))
{
int i ;
ch[1]=n-1;
ch[2]=n*(n-1);
for(i=3; i<=m; i++)
{
ch[i]=ch[i-1]*(n-1)+ch[i-2]*(n-1);
}
printf("%lld\n",ch[m]);
}
return 0;
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: