题意 : 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 ",ch[m]); 16 } 17 return 0; 18 }