K-进制数
Posted xxffxx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了K-进制数相关的知识,希望对你有一定的参考价值。
题目描述
考虑包含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<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<sstream>
#include<cstdlib>
#include<map>
using namespace std;
typedef long long ll;
double l,r;
bool ck(int n,int k)
{
string ans="";
char pre=' ';
do
{
int t=n%k;
if(t>=0&&t<=9)
{
if(t==0&&pre=='0')
return false;
ans+=t+'0';
pre=t+'0';
}
else
ans+=t-10+'a';
n/=k;
}
while(n!=0);
}
int a[20];
int tot=0;
int n,k;
void DFS(int p)
{
if(p==n)
{
tot++;
return ;
}
for(int i=0;i<k;i++)
{
if(i==0&&p==0) continue;
if(a[p-1]==0&&i==0) continue;
a[p]=i;
DFS(p+1);
}
}
int main()
{
cin>>n>>k;
for(int i=0;i<20;i++)
a[i]=0;
tot=0;
DFS(0);
cout<<tot<<endl;
return 0;
}
思路
这个题意.... 我理解错了
N位数字表示的数就是k进制数 而不是十进制数.
所以。。直接DFS搜吧。
以上是关于K-进制数的主要内容,如果未能解决你的问题,请参考以下文章