字符串
洛谷刷题五
【深基6.例1】自动修正
题目描述
大家都知道一些办公软件有自动将字母转换为大写的功能。输入一个长度不超过 \(100\) 且不包括空格的字符串。要求将该字符串中的所有小写字母变成大写字母并输出。
输入格式
输入一行,一个字符串。
输出格式
输出一个字符串,即将原字符串中的所有小写字母转化为大写字母。
样例 #1
样例输入 #1
1 | Luogu4! |
样例输出 #1
1 | LUOGU4! |
1 |
|
小书童——凯撒密码
题目背景
某蒟蒻迷上了 “小书童”,有一天登陆时忘记密码了(他没绑定邮箱 or 手机),于是便把问题抛给了神犇你。
题目描述
蒟蒻虽然忘记密码,但他还记得密码是由一个字符串组成。密码是由原文字符串(由不超过
50 个小写字母组成)中每个字母向后移动 \(n\) 位形成的。z
的下一个字母是
a
,如此循环。他现在找到了移动前的原文字符串及 \(n\),请你求出密码。
输入格式
第一行:\(n\)。第二行:未移动前的一串字母。
输出格式
一行,是此蒟蒻的密码。
样例 #1
样例输入 #1
1 | 1 |
样例输出 #1
1 | rxf |
提示
字符串长度 \(\le 50\),\(1 \leq n \leq 26\)。
1 |
|
[NOIP2008 提高组] 笨小猴
题目描述
笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!
这种方法的具体描述如下:假设 \(\text{maxn}\) 是单词中出现次数最多的字母的出现次数,\(\text{minn}\) 是单词中出现次数最少的字母的出现次数,如果 \(\text{maxn}-\text{minn}\) 是一个质数,那么笨小猴就认为这是个 Lucky Word,这样的单词很可能就是正确的答案。
输入格式
一个单词,其中只可能出现小写字母,并且长度小于 \(100\)。
输出格式
共两行,第一行是一个字符串,假设输入的的单词是 Lucky Word,那么输出
Lucky Word
,否则输出 No Answer
;
第二行是一个整数,如果输入单词是 Lucky Word
,输出 \(\text{maxn}-\text{minn}\) 的值,否则输出
\(0\)。
样例 #1
样例输入 #1
1 | error |
样例输出 #1
1 | Lucky Word |
样例 #2
样例输入 #2
1 | olympic |
样例输出 #2
1 | No Answer |
提示
【输入输出样例 1 解释】
单词 error
中出现最多的字母 \(\texttt r\) 出现了 \(3\) 次,出现次数最少的字母出现了 \(1\) 次,\(3-1=2\),\(2\) 是质数。
【输入输出样例 2 解释】
单词 olympic
中出现最多的字母 \(\texttt i\) 出现了 \(1\) 次,出现次数最少的字母出现了 \(1\) 次,\(1-1=0\),\(0\) 不是质数。
(本处原题面错误已经修正)
noip2008 提高第一题
1 |
|
口算练习题
题目描述
王老师正在教简单算术运算。细心的王老师收集了 \(i\) 道学生经常做错的口算题,并且想整理编写成一份练习。 编排这些题目是一件繁琐的事情,为此他想用计算机程序来提高工作效率。王老师希望尽量减少输入的工作量,比如 \(\texttt{5+8}\) 的算式最好只要输入 \(\texttt 5\) 和 \(\texttt 8\),输出的结果要尽量详细以方便后期排版的使用,比如对于上述输入进行处理后输出 \(\texttt{5+8=13}\) 以及该算式的总长度 \(6\)。王老师把这个光荣的任务交给你,请你帮他编程实现以上功能。
输入格式
第一行一个整数 \(i\)。
接着的 \(i\) 行为需要输入的算式,每行可能有三个数据或两个数据。
若该行为三个数据则第一个数据表示运算类型,\(\texttt a\) 表示加法运算,\(\texttt b\) 表示减法运算,\(\texttt c\) 表示乘法运算,接着的两个数据表示参加运算的运算数。
若该行为两个数据,则表示本题的运算类型与上一题的运算类型相同,而这两个数据为运算数。
输出格式
输出 \(2\times i\) 行。对于每个输入的算式,输出完整的运算式及结果,第二行输出该运算式的总长度。
样例 #1
样例输入 #1
1 | 4 |
样例输出 #1
1 | 64+46=110 |
提示
【数据规模与约定】
对于 \(50\%\) 的数据,输入的算式都有三个数据,第一个算式一定有三个数据。
对于所有数据,\(0<i\leq 50\),运算数为非负整数且小于 \(10000\)。
1 |
|
[NOIP2018 普及组] 标题统计
题目背景
NOIP2018 普及组 T1
题目描述
凯凯刚写了一篇美妙的作文,请问这篇作文的标题中有多少个字符? 注意:标题中可能包含大、小写英文字母、数字字符、空格和换行符。统计标题字符数时,空格和换行符不计算在内。
输入格式
输入文件只有一行,一个字符串 \(s\)。
输出格式
输出文件只有一行,包含一个整数,即作文标题的字符数(不含空格和换行符)。
样例 #1
样例输入 #1
1 | 234 |
样例输出 #1
1 | 3 |
样例 #2
样例输入 #2
1 | Ca 45 |
样例输出 #2
1 | 4 |
提示
样例 1 说明
标题中共有 3 个字符,这 3 个字符都是数字字符。
样例 2 说明
标题中共有 $ 5$ 个字符,包括 \(1\) 个大写英文字母, \(1\) 个小写英文字母和 \(2\) 个数字字符, 还有 \(1\) 个空格。由于空格不计入结果中,故标题的有效字符数为 \(4\) 个。
数据规模与约定
规定 \(|s|\) 表示字符串 \(s\)
的长度(即字符串中的字符和空格数)。
对于 \(40\%\) 的数据,\(1 ≤ |s| ≤
5\),保证输入为数字字符及行末换行符。
对于 \(80\%\) 的数据,\(1 ≤ |s| ≤
5\),输入只可能包含大、小写英文字母、数字字符及行末换行符。
对于 \(100\%\) 的数据,\(1 ≤ |s| ≤
5\),输入可能包含大、小写英文字母、数字字符、空格和行末换行符。
1 |
|
手机
题目描述
一般的手机的键盘是这样的:
要按出英文字母就必须要按数字键多下。例如要按出 \(\tt x\) 就得按 \(9\) 两下,第一下会出 \(\tt w\),而第二下会把 \(\tt w\) 变成 \(\tt x\)。\(0\) 键按一下会出一个空格。
你的任务是读取若干句只包含英文小写字母和空格的句子,求出要在手机上打出这个句子至少需要按多少下键盘。
输入格式
一行句子,只包含英文小写字母和空格,且不超过 200 个字符。
输出格式
一行一个整数,表示按键盘的总次数。
样例 #1
样例输入 #1
1 | i have a dream |
样例输出 #1
1 | 23 |
提示
NOI 导刊 2010 普及(10)
1 |
|
honoka的键盘
题目背景
honoka 有一个只有两个键的键盘。
题目描述
一天,她打出了一个只有这两个字符的字符串。当这个字符串里含有
VK
这个字符串的时候,honoka
就特别喜欢这个字符串。所以,她想改变至多一个字符(或者不做任何改变)来最大化这个字符串内
VK
出现的次数。给出原来的字符串,请计算她最多能使这个字符串内出现多少次
VK
(只有当 V
和 K
正好相邻时,我们认为出现了 VK
。)
输入格式
第一行给出一个数字 \(n\),代表字符串的长度。
第二行给出一个字符串 \(s\)。
输出格式
第一行输出一个整数代表所求答案。
样例 #1
样例输入 #1
1 | 2 |
样例输出 #1
1 | 1 |
样例 #2
样例输入 #2
1 | 2 |
样例输出 #2
1 | 1 |
样例 #3
样例输入 #3
1 | 1 |
样例输出 #3
1 | 0 |
样例 #4
样例输入 #4
1 | 20 |
样例输出 #4
1 | 3 |
样例 #5
样例输入 #5
1 | 4 |
样例输出 #5
1 | 1 |
提示
对于 \(100\%\) 的数据,\(1\le n\le 100\)。
1 |
|
单词覆盖还原
题目描述
一个长度为 \(l\)
的字符串中被反复贴有 boy
和 girl
两单词,后贴上的可能覆盖已贴上的单词(没有被覆盖的用句点表示),最终每个单词至少有一个字符没有被覆盖。问贴有几个
boy
几个 girl
?
输入格式
一行被反复贴有 boy
和 girl
两单词的字符串。
输出格式
两行,两个整数。第一行为 boy
的个数,第二行为
girl
的个数。
样例 #1
样例输入 #1
1 | ......boyogirlyy......girl....... |
样例输出 #1
1 | 4 |
提示
数据保证,\(3\le l\le255\),字符串仅仅包含如下字符:\(\texttt{.bgilory}\)。
1 |
|
数字反转(升级版)
题目背景
以下为原题面,仅供参考:
给定一个数,请将该数各个位上数字反转得到一个新数。
这次与 NOIp2011 普及组第一题不同的是:这个数可以是小数,分数,百分数,整数。整数反转是将所有数位对调;小数反转是把整数部分的数反转,再将小数部分的数反转,不交换整数部分与小数部分;分数反转是把分母的数反转,再把分子的数反转,不交换分子与分母;百分数的分子一定是整数,百分数只改变数字部分。整数新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零;小数新数的末尾不为 \(0\)(除非小数部分除了 \(0\) 没有别的数,那么只保留1个 \(0\));分数不约分,分子和分母都不是小数(约分滴童鞋抱歉了,不能过哦。输入数据保证分母不为 \(0\)),本次没有负数。
题目描述
给定一个数,请将该数各个位上数字反转得到一个新数。
这次与 NOIp2011 普及组第一题不同的是:这个数可以是小数,分数,百分数,整数。
整数反转是将所有数位对调。
小数反转是把整数部分的数反转,再将小数部分的数反转,不交换整数部分与小数部分。
分数反转是把分母的数反转,再把分子的数反转,不交换分子与分母。
百分数的分子一定是整数,百分数只改变数字部分。
输入格式
一个实数 \(s\)
输出格式
一个实数,即 \(s\) 的反转数
样例 #1
样例输入 #1
1 | 5087462 |
样例输出 #1
1 | 2647805 |
样例 #2
样例输入 #2
1 | 600.084 |
样例输出 #2
1 | 6.48 |
样例 #3
样例输入 #3
1 | 700/27 |
样例输出 #3
1 | 7/72 |
样例 #4
样例输入 #4
1 | 8670% |
样例输出 #4
1 | 768% |
提示
【数据范围】
- 对于 \(25\%\) 的数据,\(s\) 是整数,不大于 \(20\) 位;
- 对于 \(25\%\) 的数据,\(s\) 是小数,整数部分和小数部分均不大于 \(10\) 位;
- 对于 \(25\%\) 的数据,\(s\) 是分数,分子和分母均不大于 \(10\) 位;
- 对于 \(25\%\) 的数据,\(s\) 是百分数,分子不大于 \(19\) 位。
【数据保证】
对于整数翻转而言,整数原数和整数新数满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数和原来的数字的最高位数字不应为零。
对于小数翻转而言,其小数点前面部分同上,小数点后面部分的形式,保证满足小数的常见形式,也就是末尾没有多余的 \(0\)(小数部分除了 \(0\) 没有别的数,那么只保留 \(1\) 个 \(0\)。若反转之后末尾数字出现 \(0\),请省略多余的 \(0\))
对于分数翻转而言,分数不约分,分子和分母都不是小数。输入的分母不为 \(0\)。与整数翻转相关规定见上。
对于百分数翻转而言,见与整数翻转相关内容。
数据不存在负数。
1 |
|
斯诺登的密码
题目背景
根据斯诺登事件出的一道水题
题目描述
2013 年 X 月 X 日,俄罗斯办理了斯诺登的护照,于是他混迹于一架开往委内瑞拉的飞机。但是,这件事情太不周密了,因为 FBI 的间谍早已获悉他的具体位置——但这不是最重要的——最重要的是如果要去委内瑞拉,那么就要经过古巴,而经过古巴的路在美国的掌控之中。
丧心病狂的奥巴马迫降斯诺登的飞机,搜查时却发现,斯诺登杳无踪迹。但是,在据说是斯诺登的座位上,发现了一张纸条。纸条由纯英文构成:Obama is a two five zero.
(以
.
结束输出,只有 \(6\)
个单词+一个句号,句子开头如没有大写亦为合法)这句话虽然有点无厘头,但是警官陈珺骛发现这是一条极其重要的线索。他在斯诺登截获的一台笔记本中找到了一个
C++
程序,输入这条句子后立马给出了相对应的密码。陈珺鹜高兴得晕了过去,身为警官的你把字条和程序带上了飞机,准备飞往曼哈顿国际机场,但是在飞机上检查的时候发现——程序被粉碎了!飞机抵达华盛顿只剩
\(5\) 分钟,你必须在这 \(5\) 分钟内编写(杜撰)一个程序,免受上司的
\(10000000000 \bmod 10\)
大板。破译密码的步骤如下:
(1)找出句子中所有用英文表示的数字 \((\leq 20)\),列举在下:
正规:one two three four five six seven eight nine ten eleven twelve
thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty
非正规:a both another first second third
。为避免造成歧义,another
算作 \(1\) 处理。
(2)将这些数字平方后对 \(100\) 取模,如 \(00,05,11,19,86,99\)。
(3)把这些两位数按数位排成一行,组成一个新数,如果开头为 \(0\),就去 \(0\)。
(4)找出所有排列方法中最小的一个数,即为密码。
// 数据已经修正 By absi2011 如果还有问题请联系我
输入格式
一个含有 \(6\) 个单词的句子。
输出格式
一个整型变量(密码)。如果没有符合要求的数字出现,则输出 \(0\)。
样例 #1
样例输入 #1
1 | Black Obama is two five zero . |
样例输出 #1
1 | 425 |
1 |
|
[USACO1.1] 你的飞碟在这儿 Your Ride Is Here
题目描述
众所周知,在每一个彗星后都有一只 UFO。这些 UFO 时常来收集地球上的忠诚支持者。不幸的是,他们的飞碟每次出行都只能带上一组支持者。因此,他们要用一种聪明的方案让这些小组提前知道谁会被彗星带走。他们为每个彗星起了一个名字,通过这些名字来决定这个小组是不是被带走的那个特定的小组(你认为是谁给这些彗星取的名字呢?)。关于如何搭配的细节会在下面告诉你;你的任务是写一个程序,通过小组名和彗星名来决定这个小组是否能被那颗彗星后面的 UFO 带走。
小组名和彗星名都以下列方式转换成一个数字:最终的数字就是名字中所有字母的积,其中 \(\texttt A\) 是 \(1\),\(\texttt Z\) 是 \(26\)。例如,\(\texttt{USACO}\) 小组就是 \(21 \times 19 \times 1 \times 3 \times 15=17955\)。如果小组的数字 \(\bmod 47\) 等于彗星的数字 \(\bmod 47\),你就得告诉这个小组需要准备好被带走!(记住“\(a \bmod b\)”是 \(a\) 除以 \(b\) 的余数,例如 \(34 \bmod 10\) 等于 \(4\))
写出一个程序,读入彗星名和小组名并算出用上面的方案能否将两个名字搭配起来,如果能搭配,就输出
GO
,否则输出
STAY
。小组名和彗星名均是没有空格或标点的一串大写字母(不超过
\(6\) 个字母)。
输入格式
第1行:一个长度为 \(1\) 到 \(6\) 的大写字母串,表示彗星的名字。
第2行:一个长度为 \(1\) 到 \(6\) 的大写字母串,表示队伍的名字。
输出格式
样例 #1
样例输入 #1
1 | COMETQ |
样例输出 #1
1 | GO |
样例 #2
样例输入 #2
1 | ABSTAR |
样例输出 #2
1 | STAY |
提示
题目翻译来自 NOCOW。
USACO Training Section 1.1
1 |
|
语句解析
题目背景
木有背景……
题目描述
一串长度不超过 \(255\) 的 PASCAL
语言代码,只有 \(a,b,c\)
三个变量,而且只有赋值语句,赋值只能是一个一位的数字或一个变量,每条赋值语句的格式是
[变量]:=[变量或一位整数];
。未赋值的变量值为 \(0\) 输出 \(a,b,c\) 的值。
输入格式
一串符合语法的 PASCAL 语言,只有 \(a,b,c\) 三个变量,而且只有赋值语句,赋值只能是一个一位的数字或一个变量,未赋值的变量值为 \(0\)。
输出格式
输出 \(a,b,c\) 最终的值。
样例 #1
样例输入 #1
1 | a:=3;b:=4;c:=5; |
样例输出 #1
1 | 3 4 5 |
提示
输入的 PASCAL 语言长度不超过 \(255\)。
1 |
|
垂直柱状图
题目描述
写一个程序从输入文件中去读取四行大写字母(全都是大写的,每行不超过 \(100\) 个字符),然后用柱状图输出每个字符在输入文件中出现的次数。严格地按照输出样例来安排你的输出格式。
输入格式
四行字符,由大写字母组成,每行不超过 \(100\) 个字符
输出格式
由若干行组成,前几行由空格和星号组成,最后一行则是由空格和字母组成的。在任何一行末尾不要打印不需要的多余空格。不要打印任何空行。
样例 #1
样例输入 #1
1 | THE QUICK BROWN FOX JUMPED OVER THE LAZY DOG. |
样例输出 #1
1 | * |
提示
每行输出后面不允许出现多余的空格。
1 |
|