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(
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)
}
执行结果如下:

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(的更多相关文章
- 2021.11.09 P2292 [HNOI2004]L语言(trie树+AC自动机)
2021.11.09 P2292 [HNOI2004]L语言(trie树+AC自动机) https://www.luogu.com.cn/problem/P2292 题意: 标点符号的出现晚于文字的出 ...
- Noip模拟46 2021.8.23
给了签到题,但除了签到题其他的什么也不会.... T1 数数 人均$AC$,没什么好说的,就是排个序,然后双指针交换着往中间移 1 #include<bits/stdc++.h> 2 #d ...
- 2021.11.4测试T1-妹子
题目 今天测试,直接挂完了 写了四个小时,最后发现自己题目理解错误了 有两个区间,在输入了 \(l\) 和 \(r\) 以后,进行查询 \[ min(max(a_1,a_2,...a_p,b_{p+1 ...
- 2021.11.30 eleveni的水省选题的记录
2021.11.30 eleveni的水省选题的记录 因为eleveni比较菜,eleveni决定先刷图论,再刷数据结构,同时每天都要刷dp.当然,对于擅长的图论,eleveni决定从蓝题开始刷.当然 ...
- 2021.11.16 P2375 [NOI2014] 动物园(EXKMP+差分)
2021.11.16 P2375 [NOI2014] 动物园(EXKMP+差分) https://www.luogu.com.cn/problem/P2375 题意: PS:这道神题的背景让人疑惑,重 ...
- 2021.11.11 EXKMP
2021.11.11 EXKMP https://www.luogu.com.cn/problem/P5410 下标以1开头: #include<cstdio> #include<i ...
- Beta周第14次Scrum会议(11/23)【王者荣耀交流协会】
一.小组信息 队名:王者荣耀交流协会 小组成员 队长:高远博 成员:王超,袁玥,任思佳,王磊,王玉玲,冉华 小组照片 二.开会信息 时间:2017/11/23 17:02~17:14,总计12min. ...
- 第35次Scrum会议(11/23)【欢迎来怼】
一.小组信息 队名:欢迎来怼小组成员队长:田继平成员:李圆圆,葛美义,王伟东,姜珊,邵朔,阚博文小组照片 二.开会信息 时间:2017/11/23 17:03~17:24,总计21min.地点:东北师 ...
- 2018.11.23 浪在ACM 集训队第六次测试赛
2018.11.23 浪在ACM 集训队第六次测试赛 整理人:刘文胜 div 2: A: Jam的计数法 参考博客:[1] 万众 B:数列 参考博客: [1] C:摆花 参考博客: [1] D:文化之 ...
- 日常Javaweb 2021/11/19
Javaweb Dao层: //连接数据库,实现增查功能 package dao; import java.sql.Connection; import java.sql.DriverManager; ...
随机推荐
- mysql 中 insert 大量数据 避免时间戳相同 !!
时间函数 now() current_timestamp() 和 sysdate() CURRENT_TIMESTAMP and CURRENT_TIMESTAMP() are synonyms fo ...
- Java 面试手撕代码
1. 判断括号有效性 public static boolean fun5(String str) { HashMap<Character, Character> hashMap = ne ...
- 通用图像分割任务- 使用 Mask2Former 和 OneFormer
本文介绍两个领先的图像分割神经网络模型: Mask2Former 和 OneFormer.相关模型已经在 Transformers 提供. Transformers 是一个开源库,提供了很多便捷的先进 ...
- DVWA-File Upload(文件上传)
文件上传是很危险的漏洞,攻击者上传木马到服务器,可以获取服务器的操作权限 LOW 审计源码 <?php if( isset( $_POST[ 'Upload' ] ) ) { // 定义 文件上 ...
- Java笔记第九弹
升级版: 数据安全问题的解决 1.同步代码块 (弊端:降低了运行效率) 格式:(锁--同一把锁) synchronized(任意对象){ 多条语句操作共享数据的代码 } //sellTicket.ja ...
- docker 部署 postgres
1. 打开dockerhub查找postgres版本 地址 https://registry.hub.docker.com/_/postgres/tags 2.复制需要的版本 docker pull ...
- Salesforce Javascript(四) 展开语法 ...
本篇参考: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Spread_syntax Sale ...
- Mac连接Win的方法
前言 我们都知道,Mac和Win还是非常不一样的,作为Macdows双修选手,我今天给大家介绍一些从Mac连接Win的方法. Win的RDP 由于Win默认未安装ssh,我们最常使用的连接方式则是使用 ...
- Kafka + SpringData + (Avro & String) 【Can't convert value of class java.lang.String】问题解决
[1]需求:Kafka 使用 Avero 反序列化时,同时需要对 String 类型的 JSON数据进行反序列化.AvroConfig的配置信息如下: 1 /** 2 * @author zzx 3 ...
- MapReduce Shuffle源码解读
MapReduce Shuffle源码解读 相信很多小伙伴都背过shuffle的八股文,但一直不是很理解shuffle的过程,这次我通过源码来解读下shuffle过程,加深对shuffle的理解,但是 ...