OCAC暑期比赛第一场 A题 好长好长的字符串 题解

好长好长的字符串
原题链接:http://codeforces.com/problemset/problem/71/A
【题目描述】
好长好长的字符串是像  "localization" 或者 "internationalization" 这样的字符串,这些字符串包含很多单词,所以你在抄写这些单词的时候很费力。
我们定义一个字符串为 好长好长的字符串,当且仅当该字符串的长度大于 10。
我们现在在对单词进行简化,所以所有的好长好长的字符串都需要被简化。
我们的简化操作如下:对于一个字符串 s ,如果它是好长好长的字符串(长度超过10),那么我们将其转换为三部分的拼接:
第一部分是 s 的首字母;
第二部分是 s 中取出首字母和尾字母之后剩下的元素的个数;
第三部分是 s 的尾字母。
比如,对于一个字符串 "localization" 来说,它的长度为 12,超过了10,所以它是一个好长好长的字符串。对它进行简化操作后的结果为 "l10n"。
对  "internationalization" 进行简化后的操作为 "i18n"
而对 "jinitaimei" 进行简化操作后的结果还是它本身 —— "jinitaimei" ,因为这个单词中的元素个数没有超过 10。
现在给你一个若干个单词,你需要一次输出每一个单词简化后的结果。
【输入格式】
输入的第一行包含一个整数 n (1<=n<=100),用于表示你需要处理的单词个数。
接下来的 n 行,每行包含一个字符串 s (s 的长度在 1 到 100 之间)。
【输出格式】
输出 n 行,每行对应输入中的单词简化后的结果。
【样例输入】
4
word
localization
internationalization
pneumonoultramicroscopicsilicovolcanoconiosis
【样例输出】
word
l10n
i18n
p43s
【问题分析】
对于每一个字符串 s ,假设它的长度为 n, 如果它的长度<=10,我们原样输出;否则,我们只需要输出 s[0] + (n-2) + s[n-1] 就可以了。
使用 char 数组实现的代码如下:

#include <bits/stdc++.h>
using namespace std;

char ch[110];
int n, m;

int main() {
    cin >> n;
    while (n --) {
        cin >> ch; m = strlen(ch);
        if (m <= 10) cout << ch << endl;
        else cout << ch[0] << m - 2 << ch[m-1] << endl;
    }
    return 0;
}

使用 string 实现的代码如下:

#include <bits/stdc++.h>
using namespace std;

string s;
int n, m;

int main() {
    cin >> n;
    while (n --) {
        cin >> s; m = s.length();
        if (m <= 10) cout << s << endl;
        else cout << s[0] << m - 2 << s[m-1] << endl;
    }
    return 0;
}

原文地址:https://www.cnblogs.com/ocac/p/11113415.html

时间: 2024-08-29 13:52:09

OCAC暑期比赛第一场 A题 好长好长的字符串 题解的相关文章

OCAC暑期比赛第一场 D题 足球比赛中的危险状态 题解

足球比赛中的危险状态原题链接:http://codeforces.com/problemset/problem/96/A[题目描述]灵灵非常喜欢足球.有一天,灵灵正在看一场足球比赛,在看比赛的同时灵灵在纸上写下了每一位运动员当前的位置.为了简化所有运动员的位置的描述,灵灵将其简化成了仅由字符 "0" 和 "1" 描述的一个字符串.每一个 "0" 表示主队的一个运动员,每一个 "1" 表示客队的一个运动员.如果当前的位置中存在连

OCAC暑期比赛第一场 C题 字符串比较 题解

字符串比较原题链接:http://codeforces.com/problemset/problem/112/A[题目描述]给你两个字符串 a 和 b ,你需要比较它们在忽略大小写的情况下的字典序大小.忽略大小写的意思是:"abc" 和 "Abc" 在忽略大小写的情况下的字典序是相等的.在忽略大小写的情况下:如果字符串 a 的字典序比字符串 b 要小,输出 -1:如果字符串 a 的字典序和字符串 b 相等,输出 0:如果字符串 a 的字典序比字符串 b 要打,输出

OCAC暑期比赛第一场 J题 星球语言的翻译 题解

星球语言的翻译原题链接:http://codeforces.com/problemset/problem/41/A这里做了一定的修改,比如输入数据中的两个字符串可能不一样长.[题目描述]灵灵最近接到了一份翻译工作.他需要把一份土星文翻译成木星文.已知土星文和木星文都是由26个小写的英文字母组成的.而土星文和木星文的区别仅仅在于木星文就是土星文倒着念.比如土星文的 "code" 被翻译成木星文就是 "edoc".现在灵灵收到了一份土星文,并且他翻译好了一份木星文的初稿

OCAC暑期比赛第一场 F题 字符串加密 题解

字符串加密原题链接:http://codeforces.com/problemset/problem/281/A[题目描述]灵灵想要对一个字符串进行加密.加密的方式很简单,就是将字符串的首字母变成大写.当然咯,如果字符串的首字母一开始就是大写的,你就不用进行任何操作了.注意,在加密的过程中,除了首字母,其他元素都是不需要进行任何转换的.[输入格式]输入包含一个仅包含大小写字母的字符串(长度不超过1000).[输出格式]输出加密后的结果.[输入样例1]ApPLe[输出样例1]ApPLe[输入样例2

OCAC暑期比赛第一场 G题 男孩或者女孩 题解

男孩或者女孩原题链接:http://codeforces.com/problemset/problem/236/A[题目描述]现如今,很多男孩在论坛中使用漂亮女孩的照片作为头像.所以确定一个用户的性别就变成了一个困难的事情.去年,我们的聪聪进入了一个论坛,并且和一个(他认为是)女生相谈甚欢.他们聊得非常投机,满满地,他们开始了网恋.但是,就在昨天,聪聪和她的“女朋友”在现实世界中碰了面,并且发现这个“她”其实是一个非常强壮的男人!我们的聪聪倍感心伤,感觉不会再爱了.于是我们的聪聪提出了一套根据用

OCAC暑期比赛第一场 B题 字符串任务 题解

字符串任务原题链接:http://codeforces.com/problemset/problem/118/A[题目描述]给你一个字符串,你需要对字符串进行如下操作,并输出操作后的结果:1.删除字符串中的所有元音字母:2.在字符串中的每一个辅音字母前面添加一个字符 "."3.将字符串中的所有大写字母转成小写字母需要注意的是,这道题目是汪老师从codeforces上面翻译过来的,俄罗斯人对于元音字母的认识和英语国家不一样.俄罗斯人是把 "A", "O&qu

OCAC暑期比赛第一场 E题 有用的数学 题解

有用的数学原题链接:http://codeforces.com/problemset/problem/339/A不过在原题基础上做了一些强化,以巩固学生对输入的处理能力.[题目描述]聪聪是爱丽丝魔法学院的三年级学生.他现在正在学习加法运算.老师写下了一组加法运算.聪聪需要计算这组运算的结果.老师给的问题是包含多个整数的加法(这些整数的数据范围在 1 到 1000 之间),并且两个正数之间有一个字符 "+" .但是如果公式中存在前一个元素比后一个元素大的情况,聪聪就不会算了.聪聪能够解决

OCAC暑期比赛第一场 K题 最大公约数 题解

最大公约数[题目描述]给你两个int范围内的正整数,求它们的最大公约数.[输入格式]输入的一行包含两个正整数 a 和 b (1<=a,b<=2^31),以空格分隔.[输出格式]输出 a 和 b 的最大公约数.[样例输入]6 8[样例输出]2[题目分析]gcd模板题.我们可以用 STL 提供的 __gcd 函数直接进行运算,也可以自己模拟 gcd 函数来写.自己模拟实现的代码: #include <bits/stdc++.h> using namespace std; int gcd

OCAC暑期比赛第一场 H题 聊天室 题解

聊天室原题链接:http://codeforces.com/problemset/problem/58/A[题目描述]聪聪最近学会了使用Internet.于是他进入了一个聊天室,并决定向大家打一声招呼——说“hello”.但是因为聪聪的手指不是很灵活,所以他在打“hello”的过程中可能会触碰到一些别的键盘.聪聪打了一个字符串 s .对于这个字符串 s ,如果我们能够从 s 中删除一些字符(当然也可以不删除),使得剩下的字符在不交换次序的情况下恰好等于“hello”,那么我们就可以认为聪聪打了“