非常水,其实只是用数位dp的想法想了一下,考虑第一位0还是1就行了
#include<stdio.h>
int dp[20];
int main()
{
int n,k;
while(scanf("%d%d",&n,&k)!=EOF)
{
dp[0]=k-1;
dp[1]=(k-1)*k;
for(int i=2;i<n;i++)
{
dp[i]=(k-1)*(dp[i-1]+dp[i-2]);
}
printf("%d\n",dp[n-1]);
}
}
非常水,其实只是用数位dp的想法想了一下,考虑第一位0还是1就行了
#include<stdio.h>
int dp[20];
int main()
{
int n,k;
while(scanf("%d%d",&n,&k)!=EOF)
{
dp[0]=k-1;
dp[1]=(k-1)*k;
for(int i=2;i<n;i++)
{
dp[i]=(k-1)*(dp[i-1]+dp[i-2]);
}
printf("%d\n",dp[n-1]);
}
}