题目链接:​​http://www.dotcpp.com/oj/problem1117.html​​​ 解题思路:
这个题应该是一个递推题。可以用f[i]表示i位(最高位是第i位)K进制数的总数,那么就应该有:f[i]=(f[i-1]+f[i-2])(k-1)。
解释一下:f[i]也就是i位K进制数的总数应该等于:第i-1位为0与第i-1位不为0的情况的和乘以第i位的情况数(1…k-1)
(1)第i-1位为0的情况应该等于i-2位不为0的情况总数,即f[i-2]
(2)第i-1位不为0的情况应该等于f[i-1]
所以f[i]=(f[i-1]+f[i-2])
(k-1)

#include<bits/stdc++.h>
using namespace std;
int n,k;
int solve(int m)
{
if(m==1) return k-1;
else if(m==2) return (k-1)*k;
else return (solve(m-1)+solve(m-2))*(k-1);
}
int main()
{
int result;
while(cin>>n>>k)
{
result=solve(n);
cout<<result<<endl;
}
return 0;
}