2021-3-23春季个人赛补题(H)

Posted 如风如影�

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021-3-23春季个人赛补题(H)相关的知识,希望对你有一定的参考价值。

H - zyb的面试

题目链接: link.
原题描述:
今天zyb参加一场面试,面试官听说zyb是ACMer之后立马抛出了一道算法题给zyb:
有一个序列,是1到n的一种排列,排列的顺序是字典序小的在前,那么第k个数字是什么?
例如n=15,k=7, 排列顺序为1, 10, 11, 12, 13, 14, 15, 2, 3, 4, 5, 6, 7, 8, 9;那么第7个数字就是15.
那么,如果你处在zyb的场景下,你能解决这个问题吗?
输入T组样例(T<=100)
两个整数n和k(1<=n<=1e6,1<=k<=n),n和k代表的含义如上文
输出1-n之中字典序第k小的数字

样例

输入
1
15 7
输出
15

该题目大意就为将1-n 按字典序排列,当时首先想到的是字典树,现在想想字典树会很绕

代码如下:

#include <bits/stdc++.h>
using namespace std;
int main()

    int t;
    cin>>t;
    while(t--)
    
        int n,k;
        cin>>n>>k;
        int res=1;
        while(k-1!=0)
        
           if(res*10<=n) //字典序定义
           
               res=res*10;
               k--;
           
           else 
               if(res+1<=n)
               
                   while(res%10==9) res=res/10;//要考虑9的时候
                   res++,k--;
               
               else 
                   res=res/10;
                   while(res%10==9) res=res/10;//与上述同理
                   res++,k--;
               
           
        
        cout<<res<<endl;
    
    return 0;

以上是关于2021-3-23春季个人赛补题(H)的主要内容,如果未能解决你的问题,请参考以下文章

2021-03-20个人赛补题H - Corrupted Images

SCAU2022春季个人排位赛第五场

SCAU2022春季个人排位赛第五场

2021/11/21 ICPC沈阳站个人题解B,E,F,J(附赛时记录,另附赛后补题代码I,M)

2020.10.9个人赛补题

2020.5.10 个人rating赛 解题+补题报告