蓝桥杯 问题 1117: K-进制数 (递归)
2024-08-26 05:01:52
题目描述
考虑包含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
分析:
递归找出当前这个k进制的n位数的所有可能的情况,每次的话只考虑当前位,如果当前是第一位的话肯定不能为0,如果不是第一位的话,当前位和前一位不能全部为0,这是不合法的。
排除掉这两种情况,剩下的所有的情况都是合法的。
代码:
#include<stdio.h>
#include<iostream>
using namespace std;
int a[20],n,k;
int cnt;
void dfs(int s)
{
if(s==n)
{
cnt++;
return;
}
for(int i=0; i<k; i++)
{
//首位为0的情况 当前位和前一位都为0的情况 都是不需要考虑的
if((s==0&&i==0)||(s>0&&i==0&&a[s-1]==0))
continue;
a[s]=i;
dfs(s+1);
}
}
int main()
{
while(~scanf("%d%d",&n,&k))
{
cnt=0;
dfs(0);
printf("%d\n",cnt);
}
return 0;
}
最新文章
- 在ASP.NET中基于Owin OAuth使用Client Credentials Grant授权发放Token
- chpasswd命令
- sublime text 3 配置php开发环境
- hdu 5876 ACM/ICPC Dalian Online 1009 Sparse Graph
- java获取时间戳的方法
- CPU MPU MCU SOC SOPC关系及区别
- js常见数字处理整理
- 国内银行CNAPS CODE 查询
- NPAIRS框架的理解
- MyEclipse10.6导出war包出错
- VS2010中<;无法打开包括文件:“iostream.h”:>;错误解决方法
- 50个必备的实用jQuery代码段+ 可以直接拿来用的15个jQuery代码片段
- SQL Server IO系统问题解决
- C语言数据结构----栈与递归
- 【redis】windows
- linux下使用select实现精确定时器
- Chapter 4 Invitations——24
- SQL中DATENAME函数的用法
- 《http权威指南》读书笔记17
- SpringMVC @RequestParam和@RequestBody的区别