点我看题目

题意 : 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]

 

 1 #include <stdio.h>
 2 int main()
 3 {
 4     long long ch[101];
 5     int m,n;
 6     while(~scanf("%d %d",&m,&n))
 7     {
 8         int i ;
 9         ch[1]=n-1;
10         ch[2]=n*(n-1);
11         for(i=3; i<=m; i++)
12         {
13             ch[i]=ch[i-1]*(n-1)+ch[i-2]*(n-1);
14         }
15          printf("%lld\n",ch[m]);
16     }
17     return 0;
18 }
View Code

 

posted on 2014-04-04 21:14  枫、  阅读(143)  评论(0编辑  收藏  举报