点我看题目

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

相关文章:

  • 2022-02-04
  • 2021-07-28
  • 2021-07-20
  • 2021-10-13
  • 2022-12-23
  • 2021-12-04
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-07-21
  • 2021-10-10
  • 2021-12-07
  • 2022-12-23
  • 2021-12-10
  • 2021-12-23
相关资源
相似解决方案