#include <stdio.h>
int numOfDigits, base;
//result[digits]表示N为digits时的有多少个有效数字
int result[18];
int main(){
scanf("%d %d", &numOfDigits, &base);
//最高位非0
result[1] = base - 1;
result[2] = (base - 1) * base;
int digits;
for (digits = 3; digits <= numOfDigits; digits++)
//计算numsOfDigits的时候分为次高位为0和非0两种情况
result[digits] = (base - 1) * result[digits - 1] + (base - 1) * result[digits - 2];
printf("%d\n", result[numOfDigits]);
return 0;
}
URAL 1009 K-based Numbers (DP动态规划)
最新推荐文章于 2017-07-18 23:00:14 发布