PTA 倒数第N个字符串(详解)

news/2024/4/19 10:58:28/文章来源:https://blog.csdn.net/weixin_73142957/article/details/129115741

前言:内容包括:题目,代码实现,大致思路,代码解读

题目:

给定一个完全由小写英文字母组成的字符串等差递增序列,该序列中的每个字符串的长度固定为 L,从 L 个 a 开始,以 1 为步长递增。例如当 L 为 3 时,序列为 { aaa, aab, aac, ..., aaz, aba, abb, ..., abz, ..., zzz }。这个序列的倒数第27个字符串就是 zyz。对于任意给定的 L,本题要求你给出对应序列倒数第 N 个字符串。

输入格式:

输入在一行中给出两个正整数 L(2 ≤ L ≤ 6)和 N(≤105)。

输出格式:

在一行中输出对应序列倒数第 N 个字符串。题目保证这个字符串是存在的。

输入样例:

3 7417

输出样例:

pat

代码实现: 

#include<stdio.h>
#include<math.h>
int main()
{int l = 0;int n = 0;scanf("%d %d",&l,&n);int m = pow(26,l)-n;int i = 0;int arr[10]={0};for(i=0;i<l;i++){arr[i]=m%26;m/=26;}for(i=l-1;i>=0;i--){printf("%c",'a'+arr[i]);}return 0;
}

大致思路: 

字符串都是由a~z这26个字母组成,我们不妨将a~z看成26进制的数字

就像0~9可以看成十进制的数字,a~z可以看成0~25的26进制数字

故而每个字符串都是一个个的26进制数字

要打印倒数第n个字符串,我们可以一个字母一个字母的打印,这样就需要将某个字符串(26进制数字)拆分,拆分得到的还是一个个的26进制的数字,我们还需将它们转成对应的字母形式

得到某个字符串(26进制数字)的字母表示形式:

1 得到此26进制数字的每一位

2 将每一位上的26进制数字转成对应的字母 :26进制的数字+'a'=对应的字母 

要得到倒数第n个字符串,我们习惯上用的都是正数第某个,故而我们可以将倒数的第n个转成正数的第m个:m=pow(26,l)-n   即用总个数-倒数第n个

总个数:字符串全部为一位的情况  a~z,共26^1 

               字符串全部为2位的情况   aa~zz 共26^2个   拆分:

                   aa……az:26个

                   ba……bz :26个

                   ca……cz:26个    

                   ……

                   za……zz:26个     合起来:26*26=26^2

故而总个数的通项为:26^l  (l是位数)

代码解读:

part 1:用正着数第几位来表示倒数第n个字符串

int l = 0;int n = 0;scanf("%d %d",&l,&n);int m = pow(26,l)-n;

顺序的位置=总个数-倒数第n个

part 2: 剥离某个字符串(26进制数字)的每一位

    int i = 0;int arr[10]={0};for(i=0;i<l;i++){arr[i]=m%26;m/=26;}

剥离一个26进制数字每一位的方法:%26 /26

就像十进制数字123剥离它的每一位,得到1,2,3

123%10=3    123/10=12

12%10=2      12/10=1

1%10=1        1/10=0

26进制数字剥离每一位的方法故而可知

由于知道此26进制数字(某个字符串)的位数,我们就知道了剥离的次数:l

每一次剥离下来的数字存储到arr数组中

part 3:将每一位26进制的数字转成对应字母形式并打印

    for(i=l-1;i>=0;i--){printf("%c",'a'+arr[i]);}

由于我们是倒着存的,即先将一个字符串(26进制的数字)的末尾位上的数字剥离,故而我们要逆序打印

题目需要的是字符形式,我们要将数组中存储的每一个26进制数字转成其对应的字母形式

26进制的数字+'a'=对应的字母  ('a'的ASCII码值是65)

就像w(26进制的数值为22)要转成字母形式:22+'a'=22+65=87=字母w的ASCII码值=w

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_71567.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

优思学院:六西格玛中的水平对比方法是什么?

水平对比&#xff0c;就是比较不同事物之间的差异。 这个概念在六西格玛管理中也很重要&#xff0c;也就是我们经常说的标杆管理&#xff0c;经常被用来寻找行业中最好的做法&#xff0c;以帮助组织改进自身的绩效。 在六西格玛管理中&#xff0c;水平对比有三种常见的应用方式…

记一次IDE的Docker插件实战(Dockfile篇)

IDEA下使用Docker插件制作镜像、推送及运行 前言 本部分主要根据IDEA的Docker插件实战(Dockerfile篇)_程序员欣宸的博客-CSDN博客_idea编写dockerfile一文所述内容进行实践&#xff0c;并对其中遇到的问题进行解答&#xff0c;从而串接多个知识点。 如何编写Dockfile 在Int…

【YOLOv5】 3060显卡 GPU版本环境搭建与运行

YOLOv5环境搭建步骤创建虚拟环境使用anaconda新建一个python版本为3.7的虚拟环境查看电脑支持的cuda版本由于30系列的的显卡暂时不支持CUDA11以下版本。因此&#xff0c;这里得安装超过CUDA11.0的版本。通过如下命令来查看可以安装的cuda的版本&#xff1a;conda search cuda安…

JVM类加载子系统

1、类加载子系统在内存结构中所处的位置通过内存结构图&#xff0c;我们先知道类加载子系统所处的位置&#xff0c;做到心中有图。2、类加载器作用类加载器子系统负责从文件系统或者网络中加载Class文件&#xff0c;class文件在文件开头有特定的文件标识。ClassLoader只负责cla…

火花幻境加深与亚马逊云科技的合作,为玩家创造更加美好的游戏体验

元宇宙可谓是2022年科技界的“当红炸子鸡”&#xff0c;该概念的兴起为游戏产业带来了更多的发展机遇&#xff0c;游戏与元宇宙的结合&#xff0c;为玩家带来了更好的全息感官体验与游戏乐趣。元宇宙游戏市场前景广阔&#xff0c;企业能否快速抢滩市场&#xff0c;不断缩短游戏…

如何配置git,使其支持多用户

如何配置git&#xff0c;使其支持多用户&#xff1f; 在多数时候&#xff0c; 我们使用git进行操作时&#xff0c;只需要在本地配置一个用户的ssh key&#xff0c;就可以完成基本的pull/push操作。如果现在我有两个github的账号&#xff0c;并需要在一台电脑中操作其中的repo&…

java网络编程-nio学习:阻塞和非阻塞

一、阻塞 阻塞模式下&#xff0c;相关方法都会导致线程暂停 ServerSocketChannel.accept 会在没有连接建立时让线程暂停 SocketChannel.read 会在没有数据可读时让线程暂停 阻塞的表现其实就是线程暂停了&#xff0c;暂停期间不会占用 cpu&#xff0c;但线程相当于闲置 单线…

PyQt5数据库开发1 4.3 QSqlTableModel 之 相关槽函数的实现(多图长文详解)

目录 一、打开数据库表 1. 写打开数据库的槽函数 2. 运行后发现数据库可以打开了 3. ODBC配通了&#xff0c;数据库还是打不开 4. 写在tableView上显示数据库表的函数 5. 运行后发现表可以显示了 6. 代码分析 7. 添加列名称 8. 根据内容调整列宽 9. 备注&#xff1a;…

三、NetworkX工具包实战3——特征工程【CS224W】(Datawhale组队学习)

开源内容&#xff1a;https://github.com/TommyZihao/zihao_course/tree/main/CS224W 子豪兄B 站视频&#xff1a;https://space.bilibili.com/1900783/channel/collectiondetail?sid915098 斯坦福官方课程主页&#xff1a;https://web.stanford.edu/class/cs224w NetworkX…

数据库事务AICD以及隔离级别

目录一.事务的ACID二.隔离级别三.并发事务中的问题1.脏写2.脏读3.不可重复读4.幻读四.MVCC机制五.读锁与写锁六.大事务的影响七.事务优化一.事务的ACID 原子性(Atomicity)&#xff1a;一个事务中的所有操作&#xff0c;要么全部成功&#xff0c;要么失败全部回滚&#xff0c;不…

linux集群技术(一)--LVS(负载均衡)(一)

集群功能分类负载均衡LVS概述LVS工作模式轮训算法 1.集群功能分类 1.1 LB &#xff08;一&#xff09;简介 LB&#xff1a;Load Balancing&#xff0c;负载均衡&#xff08;增加处理能力&#xff09;,有一定高可用能力&#xff0c;但不是高可用集群&#xff0c;是以提高服务的…

「文档数据库之争」MongoDB和CouchDB的比较

MongoDB和CouchDB都是基于文档的NoSQL数据库类型。文档数据库又称mdocument store&#xff0c;通常用于存储半结构化数据的文档格式及其详细描述。它允许创建和更新程序&#xff0c;而不需要引用主模式。移动应用程序中的内容管理和数据处理是可以应用文档存储的两个字段。Mong…

SSH 服务支持弱加密算法

漏洞扫描有SSH 服务支持弱加密算法&#xff0c;解决方案有两个&#xff1a; 方案一&#xff1a;修改 SSH 配置文件&#xff0c;添加加密算法&#xff1a; vi /etc/ssh/sshd_config 最后添加一下内容&#xff08;去掉 arcfour、arcfour128、arcfour256 等弱加密算法&#xff09;…

游戏服务器算法-AOI基本介绍

一、直接比较所有对象 最直观也是最效率最低的一种方法。当一个事件发生&#xff0c;我们需要获得AOI范围以内的物体时&#xff0c;直接遍历游戏中所有的对象&#xff0c;并且进行坐标判断&#xff0c;如果小于或者等于AOI的范围&#xff0c;则为需要的游戏对象。 这种方法实…

智慧校园信息化管理平台技术方案

1.2总体架构设计 智慧校园平台是以学校现有网络为基础&#xff0c;以服务于全校师生的教学、科研、生活为目的&#xff0c;建立在学校数据中心平台之上&#xff0c;涵盖了学校的学校管理、学生管理、教学管理、班级管理、家校共育、教务管理等全方位的管理信息平台与信息服务平…

积分球原理及积分球类型介绍

标题积分球标准型积分球LED积分球均匀光源便携式高亮度积分球均匀光源微光积分球均匀光源积分球均匀光源iSphere高光谱响应光学积分球其他分类积分球 积分球原理:由于球体内整涂有白色漫反射材料的空腔球体&#xff0c;球壁上开有采样口&#xff0c;当待测样品光源进入积分球的…

公司缺人面了8个测试员,他们都有一个相同的缺点.....

年后公司缺人&#xff0c;面了不少测试&#xff0c;结果竟然没有一个合适的。 一开始瞄准的就是中级的水准&#xff0c;也没指望来大牛&#xff0c;提供的薪资在10-20k&#xff0c;面试的人很多&#xff0c;但平均水平很让人失望。 看简历很多都是3年工作经验&#xff0c;但面…

约束优化:约束优化的三种序列无约束优化方法(罚函数法)

文章目录约束优化&#xff1a;约束优化的三种序列无约束优化方法&#xff08;罚函数法&#xff09;外点罚函数法L2-罚函数法&#xff1a;非精确算法对于等式约束对于不等式约束L1-罚函数法&#xff1a;精确算法内点罚函数法&#xff1a;障碍函数法参考文献约束优化&#xff1a;…

Docker实用命令手册

Docker实用命令手册 大家好&#xff0c;我是比特桃。本文汇总了超实用的Docker命令手册&#xff0c;本文适用于有一定Docker基础的同学。如果你对Docker不了解&#xff0c;可能无法直接使用这些命令。但别担心&#xff0c;Docker本身是一个工具&#xff0c;如果只是用起来其实…