倒数第N个字符
一. 题目描述
给定一个完全由小写英文字母组成的字符串等差递增序列,该序列中的每个字符串的长度固定为 L,从 L 个 a 开始,以 1 为步长递增。例如当 L 为 3 时,序列为 { aaa, aab, aac, ..., aaz, aba, abb, ..., abz, ..., zzz }。这个序列的倒数第27个字符串就是 zyz。对于任意给定的 L,本题要求你给出对应序列倒数第 N 个字符串。
输入格式:
输入在一行中给出两个正整数 L(2 ≤ L ≤ 6)和 N(≤\(10^5\))。
输出格式:
在一行中输出对应序列倒数第 N 个字符串。题目保证这个字符串是存在的。
输入样例:
3 7417
结尾无空行
输出样例:
pat
结尾无空行
二.问题分析
- \(a-z相隔26,aaa相当于000,zzz相当于999,即这些就相当于是26进制\)
- \(000 = 0*10^2 + 0*10^1 +0*10^0\)
\(..................................................\)
\(999 = 9*10^2 + 9*10^1 +9*10^0\)
\(总共有10^3项\)- \(所以可以类比十进制\)
\(000 = 0*26^2 + 0*26^1 +0*26^0\)
\(..................................................\)
\(252525= 25*26^2 + 25*26^1 +25*26^0\)
\(总共有26^3项\)
4.\(算倒数多少项\)
\(比如:\)
\(0-9 : 倒数第二项是8 = 10-2;\)
\(1-10: 倒数第二项是9 = 10+1-2\)
一般进制转化是从\(0\)开始的,故从倒数第\(n\)项 = 正数第 (总数 - n)项
三.代码
#include<bits/stdc++.h>
using namespace std;
int main() {
int l,n;
cin >> l >> n;
n = pow(26,l) - n;
for(int i = 0 ; i < l ; i++) {
int r = pow(26,l-i-1);
int t = n/r;
n %= r;
cout<<(char)('a' + t);
}
return 0;
}
注:
1.\(由于是字符型,整型需转化为字符型\)
\(0-->'a' -->0+'a'\)
\(1-->'b'-->1+'a'\)
\(......................................\)
\(8-->'y' -->8+'a'\)
\(9-->'z'-->9+'a'\)
\(故式子为(char)(t+'a')\)
2.\(顺序分解分解各个位数的数字\)
\(789:\)
\(7=789÷10^2\)
\(89=789\)%\(10^2\)
\(8=89÷10\)
\(9 = 89\)%\(10\)
\(9 = 9÷1\)
所以代码是:
for(int i = 0 ; i < l ; i++) {
int r = pow(10,l-i-1);
int t = n/r;
n %= r;
}
下面是倒序分解
while(n) {
int t = n%10;
n /= 10;
}
倒数第N个字符的更多相关文章
- php去掉字符串的最后一个字符附substr()的用法
转自:http://www.jb51.net/article/26604.htm 今天项目中用到,去掉字符串中的最后一个字符 原字符串1,2,3,4,5,6, 去掉最后一个字符"," ...
- linux sed awk seq 正则使用 截取字符 之技巧
[root@room9pc01 ~]# seq 5 1 2 3 4 5 [root@room9pc01 ~]# seq 2 5 2 3 4 5 seq 1 2 10 1 3 5 7 9 [root@d ...
- python按照指定字符或者长度 截取字符串
1.截取指定位置字符串 Python字符串可以理解为一个数组,获取某一部分的可以使用 str[beginIndex:endPosition],其中str为需要截取的字符串,beginIndex为需要截 ...
- python3:实现字符串的全排列(无重复字符)
最近在学一些基础的算法,发现我的数学功底太差劲了,特别是大学的这一部分,概率论.线性代数.高数等等,这些大学学的我是忘得一干二净(我当时学的时候也不见得真的懂),导致现在学习算法,非常的吃力.唉!不说 ...
- python3实现字符串的全排列的方法(无重复字符)
https://www.jb51.net/article/143357.htm 抛出问题 求任意一个字符串的全排列组合,例如a='123',输出 123,132,213,231,312,321.(暂时 ...
- 02-oracle字符函数
字符函数(scott/tiger 登陆) --upper(col name)将字符大写 --lower(col name)将字符小写 --initcap(col name)字符串的首字母大写,其余小写 ...
- windows批处理学习(字符换操作)---04
转自:https://www.cnblogs.com/DswCnblog/p/5432326.html 1.截取字符串 截取字符串可以说是字符串处理功能中最常用的一个子功能了,能够实现截取字符串中的特 ...
- Oracle中的字符函数
Oracle中常用的字符串函数有以下几种: 1.upper()---将字符串的内容全部转换为大写.lower()---将字符串的内容全部转换为小写.具体用法: select upper('test' ...
- JS 截取字符的方法
substr() 方法 substr() 方法可在字符串中抽取从 start 下标开始的指定数目的字符. stringObject.substr(start,length) start:必需.要抽取的 ...
随机推荐
- Citus 分布式 PostgreSQL 集群 - SQL Reference(查询分布式表 SQL)
如前几节所述,Citus 是一个扩展,它扩展了最新的 PostgreSQL 以进行分布式执行.这意味着您可以在 Citus 协调器上使用标准 PostgreSQL SELECT 查询进行查询. Cit ...
- Spring 由哪些模块组成?
以下是 Spring 框架的基本模块:第 393 页 共 485 页 Core module Bean module Context module Expression Language module ...
- Java 中如何格式化一个日期?如格式化为 ddMMyyyy 的形式?
Java 中,可以使用 SimpleDateFormat 类或者 joda-time 库来格式日期. DateFormat 类允许你使用多种流行的格式来格式化日期.参见答案中的示例代 码,代码中演示了 ...
- css浮动的"巨坑"与完美解决办法
浮动 1 浮动概念 如果想实现网页中排版布局,比如一行内显示对应的标签元素,可以使用浮动属性.浮动可以实现元素并排. 块转行内日块也可以实现一行显示,不过存在空白折叠现象 float 浮动 属性值 描 ...
- (stm32f103学习总结)—can总线
参考:CAN总线的位时序与参数设置 CAN总线位同步 1 CAN总线介绍 CAN 是Controller Area Network 的缩写,中文意思是控制器局域网 络,是ISO国际标准化的串行通信协议 ...
- 纯CSS实现柱形图
CSS在处理排版之强大,没有做不到,只有想不到.下面我们将一同实现一个柱状图. 先打好一个具体的框架.我们利用无序列表做整体,里面的东西我们根本选择内联无素span,strong,em来填充. < ...
- java的内存泄露是如何发生的,如何避免和发现
java的垃圾回收与内存泄露的关系:[新手可忽略不影响继续学习] 马克-to-win:上一节讲了,(i)对象被置成null.(ii)局部对象(无需置成null)当程序运行到右大括号.(iii)匿名对象 ...
- 【Android开发】Android6.0请求权限方式
记录一下最普通的动态请求权限的方法: private int requestCode == 123; //判断当前系统的版本 if(Build.VERSION.SDK_INT >= 23){ i ...
- Android控件设置半透明+EditText设置默认值+ 控件居中
Android控件设置半透明 效果 代码: android:background="#50FFFFFF" 50表示50%透明 Android:EditText设置默认值 andro ...
- Qt QPropertyAnimation+QTimer实现自制悬浮窗
目录 Qt下的悬浮窗 QPropertyAnimation QTimer 事件过滤 图标变换 自适应窗口大小 使用方法 Qt下的悬浮窗 最近项目需要一个类似于360悬浮球类似的悬浮窗,当鼠标放入停留一 ...