当前位置只能由某几个数字构成,如何求出第n个数是什么?

例如:当前数字只能由1,4,5构成,问在所有的数中,满足这种性质的第n个数是多少

 

考虑进制:数字只能由1,4,5构成,换句话来说和只能由0,1,2构成同理,只不过最后是把012换成了145

所以可以直接把这个数换成3进制,然后对应输出即可,任何相关的都可以用进制来解决

C - Even Digits (atcoder.jp)

#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e6+10,mod=1e9+7;
signed main()
{
    std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
    int n; cin>>n;
    if(n!=1) n--;
    else return cout<<0,0;
    stack<int>s;
    while(n){
        s.push(n%5),n/=5;
    }
    while(!s.empty()){
        int now=s.top(); s.pop();
        if(now==0) cout<<"0";
        if(now==1) cout<<"2";
        if(now==2) cout<<"4";
        if(now==3) cout<<"6";
        if(now==4) cout<<"8";
    }
    return 0;
}

 

posted @ 2024-05-26 11:21  o-Sakurajimamai-o  阅读(20)  评论(0编辑  收藏  举报
-- --