考虑包含N位数字的K-进制数. 定义一个数有效, 如果其K-进制表示不包含两连续的0.
考虑包含N位数字的K-进制数. 定义一个数有效, 如果其K-进制表示不包含两连续的0.
例:
1010230 是有效的7位数
1000198 无效
0001235 不是7位数, 而是4位数.
给定两个数N和K, 要求计算包含N位数字的有效K-进制数的总数.
假设2 <= K <= 10; 2 <= N; 4 <= N+K <= 18.
#include<iostream>
using
namespace
std;
long
long
d0[20];
//存首数字为0的n位数个数(第二位不为0)
long
long
d1[20];
//存首数字不为0的n位数个数
int
main()
{
int
N,K;
cin>>N>>K;
d1[1]=K-1;
d0[1]=1;
for
(
int
i=2;i<=N;++i)
{
d0[i]=d1[i-1];
d1[i]=(d0[i-1]+d1[i-1])*(K-1);
}
cout<<d1[N];
return
0;
}