字典序的第K小数字
2024-09-04 07:23:41
今天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的场景下,你能解决这个问题吗
题解
https://blog.csdn.net/FJJ543/article/details/81908992
#include<bits/stdc++.h>
using namespace std ;
#define LL long long
#define INF 0x3f3f3f3f
#define mod 1000000007
int FF(int n , int k)
{
int curr = ;
k = k - ;
while (k > ) {
long steps = , first = curr, last = curr + ;
while (first <= n) {
steps += min((long)n + , last) - first;
first *= ;
last *= ;
}
if (steps <= k) {
curr += ;
k -= steps;
} else {
curr *= ;
k -= ;
}
}
return curr;
} int main()
{ int T;
scanf("%d",&T);
while(T--)
{
int n,k;
scanf("%d%d",&n,&k);
k--;
int cnt=;
while(k)
{
int st= , head=cnt , tail = cnt+;
while(head<=n)
{
st+=min(n+,tail) - head;
head*=;
tail*=;
}
if(st<=k)
{
cnt++;
k-=st;
}
else
{
cnt*=;
k--;
}
}
printf("%d\n",cnt);
}
return ;
}
最新文章
- Linux文件管理
- 使用自签名的方式创建Docker私有仓库
- C#操作SQLite数据库
- Git-Bash学习笔记
- UE4 通过HTTP 接受JPG并动态 构建 UTexture2D 简单例子
- jacob下载问题, Office word 此文件正由另一应用程序或用户使用的解决方法
- expdp导出数据库
- silverlight 文本框只能输入数字
- 局域网动态ip
- 如何利用服务器下发的Cookie实现基于此Cookie的会话保持
- R for installing package &#39;omg&#39;
- OpenSSL命令---rsa
- Arch最小化安装LXDE桌面环境
- CocoaPods ReactiveCocoa 学习实践一 之 配置环境
- Pytorch中torch.autograd ---backward函数的使用方法详细解析,具体例子分析
- XSS跨站脚本小结(转)
- (5.1)sql server系统数据库
- express-session相关用法
- Teamproject Week7 --Scrum Meeting #1 2014.10.28
- 关于scrum敏捷测试