1013: K-进制数
时间限制: 1 Sec 内存限制: 128 MB提交: 71 解决: 14
[提交][状态][讨论版]
题目描述
考虑包含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.
输入
两个十进制整数N和K
输出
十进制表示的结果
样例输入
2
10
样例输出
90
提示
来源
思路:略。
# include <stdio.h> # include <string.h> int dp[9][2], n, k; int dfs(int pos, int pre) { if(pos == -1) return 1; if(dp[pos][pre==0] != -1) return dp[pos][pre==0]; int ans=0; int i=pos==n-1?1:0; for(; i<=k-1; ++i) { if(pre==0 && i==0) continue; ans += dfs(pos-1, i); } dp[pos][pre==0] = ans; return ans; } int main() { while(~scanf("%d%d",&n,&k)) { memset(dp, -1, sizeof(dp)); printf("%d\n",dfs(n-1,0)); } return 0; }