2021-11-23:规定:L[1]对应a,L[2]对应b,L[3]对应c,…,L[25]对应y。
S1 = a,
S(i) = S(i-1) + L[i] + reverse(invert(S(i-1)));
解释invert操作:
S1 = a,
S2 = aby。
假设invert(S(2)) = 甲乙丙,
a + 甲 = 26, 那么 甲 = 26 - 1 = 25 -> y,
b + 乙 = 26, 那么 乙 = 26 - 2 = 24 -> x,
y + 丙 = 26, 那么 丙 = 26 - 25 = 1 -> a,
如上就是每一位的计算方式,所以invert(S2) = yxa。
所以S3 = S2 + L[3] + reverse(invert(S2)) = aby + c + axy = abycaxy,
invert(abycaxy) = yxawyba, 再reverse = abywaxy。
所以S4 = abycaxy + d + abywaxy = abycaxydabywaxy。
直到S25结束。
给定两个参数n和k,返回Sn的第k位是什么字符,n从1开始,k从1开始,
比如n=4,k=2,表示S4的第2个字符是什么,返回b字符。
来自网易。

答案2021-11-23:

单边递归。
时间复杂度:O((1)。数量有限。
额外空间复杂度:O(1)。数量有限。

代码用golang编写。代码如下:

package main

import "fmt"

func main() {
ret := kth(7, 1)
fmt.Printf("%c\r\n", ret)
ret = kth(7, 2)
fmt.Printf("%c\r\n", ret)
ret = kth(7, 3)
fmt.Printf("%c\r\n", ret)
ret = kth(7, 4)
fmt.Printf("%c\r\n", ret)
ret = kth(7, 5)
fmt.Printf("%c\r\n", ret)
ret = kth(7, 6)
fmt.Printf("%c\r\n", ret)
ret = kth(7, 7)
fmt.Printf("%c\r\n", ret)
} var lens []int func fillLens() {
lens = make([]int, 26)
lens[1] = 1
for i := 2; i <= 25; i++ {
lens[i] = (lens[i-1] << 1) + 1
}
} // 求sn中的第k个字符
// O(n), s <= 25 O(1)
func kth(n, k int) byte {
if lens == nil {
fillLens()
}
if n == 1 { // 无视k
return 'a'
}
// sn half
half := lens[n-1]
if k <= half {
return kth(n-1, k)
} else if k == half+1 {
return byte('a' + n - 1)
} else {
// sn
// 我需要右半区,从左往右的第a个
// 需要找到,s(n-1)从右往左的第a个
// 当拿到字符之后,invert一下,就可以返回了!
return invert(kth(n-1, ((half+1)<<1)-k))
}
} func invert(c byte) byte {
return byte(('a' << 1) + 24 - c)
}

执行结果如下:


左神java代码

2021-11-23:规定:L[1]对应a,L[2]对应b,L[3]对应c,...,L[25]对应y。 S1 = a, S(i) = S(i-1) + L[i] + reverse(invert(S(的更多相关文章

  1. 2021.11.09 P2292 [HNOI2004]L语言(trie树+AC自动机)

    2021.11.09 P2292 [HNOI2004]L语言(trie树+AC自动机) https://www.luogu.com.cn/problem/P2292 题意: 标点符号的出现晚于文字的出 ...

  2. Noip模拟46 2021.8.23

    给了签到题,但除了签到题其他的什么也不会.... T1 数数 人均$AC$,没什么好说的,就是排个序,然后双指针交换着往中间移 1 #include<bits/stdc++.h> 2 #d ...

  3. 2021.11.4测试T1-妹子

    题目 今天测试,直接挂完了 写了四个小时,最后发现自己题目理解错误了 有两个区间,在输入了 \(l\) 和 \(r\) 以后,进行查询 \[ min(max(a_1,a_2,...a_p,b_{p+1 ...

  4. 2021.11.30 eleveni的水省选题的记录

    2021.11.30 eleveni的水省选题的记录 因为eleveni比较菜,eleveni决定先刷图论,再刷数据结构,同时每天都要刷dp.当然,对于擅长的图论,eleveni决定从蓝题开始刷.当然 ...

  5. 2021.11.16 P2375 [NOI2014] 动物园(EXKMP+差分)

    2021.11.16 P2375 [NOI2014] 动物园(EXKMP+差分) https://www.luogu.com.cn/problem/P2375 题意: PS:这道神题的背景让人疑惑,重 ...

  6. 2021.11.11 EXKMP

    2021.11.11 EXKMP https://www.luogu.com.cn/problem/P5410 下标以1开头: #include<cstdio> #include<i ...

  7. Beta周第14次Scrum会议(11/23)【王者荣耀交流协会】

    一.小组信息 队名:王者荣耀交流协会 小组成员 队长:高远博 成员:王超,袁玥,任思佳,王磊,王玉玲,冉华 小组照片 二.开会信息 时间:2017/11/23 17:02~17:14,总计12min. ...

  8. 第35次Scrum会议(11/23)【欢迎来怼】

    一.小组信息 队名:欢迎来怼小组成员队长:田继平成员:李圆圆,葛美义,王伟东,姜珊,邵朔,阚博文小组照片 二.开会信息 时间:2017/11/23 17:03~17:24,总计21min.地点:东北师 ...

  9. 2018.11.23 浪在ACM 集训队第六次测试赛

    2018.11.23 浪在ACM 集训队第六次测试赛 整理人:刘文胜 div 2: A: Jam的计数法 参考博客:[1] 万众 B:数列 参考博客: [1] C:摆花 参考博客: [1] D:文化之 ...

  10. 日常Javaweb 2021/11/19

    Javaweb Dao层: //连接数据库,实现增查功能 package dao; import java.sql.Connection; import java.sql.DriverManager; ...

随机推荐

  1. excel里面嵌入一个表格

    excel里怎么嵌入表格 excel是我们工作中经常会用的软件,有时两表格想放在一起比较,但是行高列宽调起来顾此失彼,so: 软件版本:Microsoft Office Excel 2010 操作系统 ...

  2. mmdetection加载ndarray数据,并训练

    1.构造coco数据集,file_name为具体的ndarray文件名,类名的改变和class_num的配置和之前一样.保存的npy文件是归一化之后的结果 2.修改数据加载代码,将 2.修改网络输入i ...

  3. Linux 用户密码不能设置问题

    当我们有时候要更改linux账户密码时,有时候会遇到下面这种情况: Password has been already used. Choose another.passwd: Have exhaus ...

  4. asp.net 应用程序中同步方法调用异步方法无响应解决方法

    微软发布 C# async/await 异步语法功能已经好久了,但是目前来看使用并不广泛.本人经过实践在开发过程中使用 async/await 一路到底确实很爽,而且也没有啥问题.但是在面对旧项目变更 ...

  5. pcm音频的录制、播放及转换

    操作系统 :Windows10_x64 pcm格式为原始音频数据,有时候会遇到需要录制.播放及转换的情况,这里记录下. 一.录制pcm音频 这里演示下使用Audacity进行pcm音频录音的过程. A ...

  6. 职场「OKR」,魔幻又内卷

    个人习惯称之为[O-KR-KPI]组合: 01 从进厂实习那天开始,就接触了KPI的概念: 互联网公司,年初入职,可能因为那天是周五,又赶上月底,少不了要把KPI搬出来折腾一番: 天时,地利,人和: ...

  7. [issues] webrtc 接入SRS丢包率不正确问题

    目录 [issues] webrtc 接入SRS丢包率不正确问题 原因和解决方法 srs增加rtx SDP协商 构建RTX包 [issues] webrtc 接入SRS丢包率不正确问题 原因和解决方法 ...

  8. Wikijs简介-强大&可扩展的开源维基软件

    Wikijs - 最强大 最可扩展的开源维基软件 使用 wiki.js 美丽直观的界面,让文档成为写作的乐趣! 优点 随时随地安装 几乎适用于任何平台,并与PostgreSQL.MySQL.Maria ...

  9. pysimplegui之窗口大小,位子,主题等属性修改

    重点 1finalize()或Window参数finalize=True 调用以强制窗口通过初始化的最后阶段.这将导致 tkinter 资源被分配,以便它们可以被修改.这也会导致您的窗口出现.如果您不 ...

  10. [Linux]scp/sshpass:物理主机与虚拟机的文件传输

    最初写这篇文章的时候,对 openssh大家族的工具套件(例如: ssh.sshd.ssl.scp等)不太熟悉,现在看来这个文章的标题(虚拟机与物理机)是存在问题的. 本质上,本文关心的并不是[虚拟机 ...