首页 > 其他 > 详细

EOJ Monthly 2019.11部分题解

时间:2020-01-13 21:53:42      阅读:94      评论:0      收藏:0      [点我收藏+]

A题

本题虽然是签到题,但是思路十分精巧,提醒我以后思考的时候可以多考虑进制转化的思路

因为本题要求第x个单词,又注意到备选单词的长度是相同的,可以想到用k进制的转化来思考

第x个即求x-1的k进制数,然后按照前后顺序来逐个遍历#号并替换,注意的是,不够要添0

技术分享图片
#include<iostream>
#include<cstring>
#include<string>
#include<cmath>
#include<algorithm>
#include<map>
#include<vector>
#include<cstdio>
#include <unordered_map>
using namespace std;
const int N=2000005;
const int inf=0x3f3f3f3f;
typedef long long ll;
vector<int> num;
vector<char> c;
int main(){
    int n,m,k;
    ll x;
    string s;
    cin>>n>>m>>k>>x;
    char t;
    cin>>s;
    int i,j;
    x-=1;
    while(x){
        num.push_back(x%k);
        x/=k;
    }
    int mid=m-(int)num.size();
    for(i=0;i<mid;i++)
    num.push_back(0);
    m-=1;
    for(i=0;i<n;i++){
        if(s[i]==#){
            for(j=0;j<k;j++){
                cin>>t;
                c.push_back(t);
            }
            sort(c.begin(),c.end());
            cout<<c[num[m]]; 
            m--;
            c.clear();
        }
        else
        cout<<s[i];
    }
    cout<<endl;
}
View Code

EOJ Monthly 2019.11部分题解

原文:https://www.cnblogs.com/ctyakwf/p/12189181.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!