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-进制数的主要内容,如果未能解决你的问题,请参考以下文章

K-进制数

问题 1110: 2^k进制数

洛谷 P1066 2^k进制数

[luogu]P1066 2^k进制数[数学][递推][高精度]

noip2006 2^k进制数

P1066 2^k进制数