您的位置:首页 > 其它

ural1009(动态规划)

2017-07-18 23:00 204 查看

A - K-based NumbersURAL - 1009


 Let’s consider K-based numbers, containing exactly N digits. We define a number to be valid if its K-based notation doesn’t contain two successive zeros. For example:

1010230 is a valid 7-digit number;
1000198 is not a valid number;
0001235 is not a 7-digit number, it is a 4-digit number.
Given two numbers N and K, you are to calculate an amount of valid K based numbers, containing N digits.You may assume that 2 ≤ K ≤ 10; N ≥ 2; N + K ≤ 18. The numbers N and K in decimal notation separated by the line break.
2
10
90
思路:一位时有k-1种,两位时有k*(k-1)种,从第三位开始每一位都是(k-1)种乘上(dp[i-1]+dp[i-2])故递推式很容易就推出来了。
#include<iostream>
#include<string.h>
#include<algorithm>
#include<stdio.h>
using namespace std;

long long dp[21];
int n,k,i;
int main()
{
while(~scanf("%d%d",&n,&k))
{
dp[1]=k-1; dp[2]=(k-1)*k;
for (i=3;i<=n;i++)
dp[i]=(k-1)*(dp[i-1]+dp[i-2]);
printf("%lld\n",dp
);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: