普及组重要的模拟题。附上题目链接 https://www.luogu.org/problem/show?pid=1061 (写水题题解算是巩固提醒自己细心吧qwq)

样例输入:

bdfij

样例输出:

bdghi
bdghj
bdgij
bdhij
befgh

这题把数字转换成字符。指定一个区间[L,R],使用其中的字符作为数字使用。

拿样例数据来举例,L=2 R=10,则区间为

2 3 4 5 6 7 8 9 10
b c d e f g h i j

起始数字为bdfij,要求依次输出后面的5个数字。输出下一个数字就要对这个数字的最低一位进行进位,如果这个数字超出了区间右边界R,则向高一位进位。

bdfij最低一位是j,进一变成k,k对应的数字11超出了右边界R=10,向高一位进位。i进一变成j,但是如果i变成j那么最后一位就不能再为j了(根据题意,数字中的字符没有重复,且从左到右字典序依次增大),那么这时候再向高一位进位,f变成g,剩余h,i,j可以给前两位进行进位。修改字符串。bdfij变成了bdghi,输出然后从最后一位继续做一遍。

代码实现:

  var
s,t,n:longint; //s为边界L,t为边界R
str:string;
function w(ch:char):longint; //函数:返回字符对应的编号
begin
exit(ord(ch)-ord('a')+);
end;
function dw(n:longint):char; //函数:返回编号对应的字符
begin
exit(chr(n+ord('a')-));
end;
procedure doit(c:longint);
var
i,last:longint;
begin
if c> then halt; //输出5次后退出程序
for i:=length(str) downto do //从最低位开始
begin
if i= then //处理特殊情况
begin
last:=i;
break;
end;
if w(str[i])++length(str)-i>t then continue //如果进位后超出边界R则向高一位继续
else
begin
last:=i; //不超出边界,last记录当前所在位数
break;
end;
end;
str[last]:=dw(w(str[last])+); //进一位
for i:=last+ to length(str) do //处理剩余的位数
str[i]:=dw(w(str[i-])+);
writeln(str); //输出
doit(c+); //继续
end;
begin
readln(s,t,n);
readln(str);
doit();
end.

NOIP2006普及组 Jam的计数法的更多相关文章

  1. Codevs 1140 Jam的计数法 2006年NOIP全国联赛普及组

    1140 Jam的计数法 2006年NOIP全国联赛普及组 传送门 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description Jam是个喜欢标 ...

  2. 1140 Jam的计数法

    1140 Jam的计数法 2006年NOIP全国联赛普及组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解  查看运行结果     题目描述 Descri ...

  3. Jam的计数法

    Jam的计数法 题目描述 Description Jam是个喜欢标新立异的科学怪人.他不使用阿拉伯数字计数,而是使用小写英文字母计数,他觉得这样做,会使世界更加丰富多彩.在他的计数法中,每个数字的位数 ...

  4. Codevs 1140 Jam的计数法

    1140 Jam的计数法 题目描述 Description Jam是个喜欢标新立异的科学怪人.他不使用阿拉伯数字计数,而是使用小写英文字母计数,他觉得这样做,会使世界更加丰富多彩.在他的计数法中,每个 ...

  5. [NOIP2006] 普及组

    明明的随机数 STL真是偷懒神器 /*by SilverN*/ #include<algorithm> #include<iostream> #include<cstri ...

  6. 洛谷P1061 Jam的计数法

    题目描述 Jam是个喜欢标新立异的科学怪人.他不使用阿拉伯数字计数,而是使用小写英文字母计数,他觉得这样做,会使世界更加丰富多彩.在他的计数法中,每个数字的位数都是相同的(使用相同个数的字母),英文字 ...

  7. Jam的计数法(codevs 1140)

    题目描述 Description Jam是个喜欢标新立异的科学怪人.他不使用阿拉伯数字计数,而是使用小写英文字母计数,他觉得这样做,会使世界更加丰富多彩.在他的计数法中,每个数字的位数都是相同的(使用 ...

  8. 蓝桥杯之JAM的计数法

    题目描述 Jam是个喜欢标新立异的科学怪人.他不使用阿拉伯数字计数,而是使用小写英文字母计数,他觉得这样做,会使世界更加丰富多彩.在他的计数法中,每个数字的位数都是相同的(使用相同个数的字母),英文字 ...

  9. RQNOJ PID3 / Jam的计数法

    题目描述 Jam是个喜欢标新立异的科学怪人.他不使用阿拉伯数字计数,而是使用小写英文字母计数,他觉得这样做,会使世界更加丰富多彩.在他的计数法中,每个数字的位数都是相同的(使用相同个数的字母),英文字 ...

随机推荐

  1. 10、jstl标签库

    一.JSTL是SUN公司制定的一个JSP标签库,由apache jakarta组织负责维护的开源项目,目的是用标签代替java代码片段.JSTL 1.0 由四个定制标记库(core.format.xm ...

  2. kaldi通用底层矩阵运算库——CUDA

    cudamatrix/cublas-wrappers.h 该头文件对cuBLAS的接口进行了简单的封装(函数名的简化和部分kaldi函数的封装). 比如 cublasSgemm_v2封装为cublas ...

  3. Groovy中的GString

    在讨论GString之前,我们先讨论一下Groovy里面的String.在Groovy里面String有 println 'test string' println '''test string''' ...

  4. 【4】学习C++之内存管理

    单个内存申请及释放: int *p = new int; if(p == NULL) { //内存分配失败 //异常处理 } delete p; p = NULL; 内存块的申请及释放: ]; if( ...

  5. P5303 [GXOI/GZOI2019]逼死强迫症

    题目地址:P5303 [GXOI/GZOI2019]逼死强迫症 这里是官方题解 初步分析 从题目和数据范围很容易看出来这是一个递推 + 矩阵快速幂,那么主要问题在于递推的过程. 满足条件的答案一定是以 ...

  6. 区别 chown和chmod的用法

    本人总是习惯使用chmod,而把chown混淆. chown就是修改 第一列内容的 ,chmod是修改 第3,4列内容的. chown用法用来更改某个目录或文件的用户名和用户组的chown 用户名:组 ...

  7. React(17)异步组件

    26.异步组件当在React里使用异步组件时,核心知识是两个: webpack 如何异步加载其他模块:通过 require(['xxx'], function(module){})来实现:React ...

  8. c# 利用IEqualityComparer接口去除DataTable重复数据

    IEqualityComparer主要适用于定义方法以支持对象的相等比较.可以实现集合的自定义相等比较.即,您可以创建自己的相等定义,并指定此定义与接受 IEqualityComparer 接口的集合 ...

  9. nginx+uwsgi+django开发环境搭建

    Nginx+uWSGI+Djangoi开发环境搭建 Django简介,环境搭建 uWSGI简介,安装与配置 Nginx安装与配置 Nginx+uWSGI+Django原理解析 1.django简介,环 ...

  10. python学习第30天

    tcp协议的socket server 并发效果验证客户端的合法性socket模块还有一些其他的方法