因为一些原因昨天计划被打乱,今天补上。
目录
P5015 [NOIP2018 普及组] 标题统计
题目描述
凯凯刚写了一篇美妙的作文,请问这篇作文的标题中有多少个字符? 注意:标题中可能包含大、小写英文字母、数字字符、空格和换行符。统计标题字 符数时,空格和换行符不计算在内。
输入格式
输入文件只有一行,一个字符串 ss。
输出格式
输出文件只有一行,包含一个整数,即作文标题的字符数(不含空格和换行符)。
输入输出样例
输入 #1复制
234输出 #1复制
3输入 #2复制
Ca 45输出 #2复制
4说明/提示
【输入输出样例 1 说明】
标题中共有 3 个字符,这 3 个字符都是数字字符。【输入输出样例 2 说明】 标题中共有55 个字符,包括 11 个大写英文字母, 11 个小写英文字母和 22 个数字字符, 还有 11 个空格。由于空格不计入结果中,故标题的有效字符数为 44 个。
【数据规模与约定】
规定 |s|∣s∣ 表示字符串 ss 的长度(即字符串中的字符和空格数)。
对于 40\%40% 的数据,1 ≤ |s| ≤ 51≤∣s∣≤5,保证输入为数字字符及行末换行符。
对于 80\%80% 的数据,1 ≤ |s| ≤ 51≤∣s∣≤5,输入只可能包含大、小写英文字母、数字字符及行末换行符。
对于 100\%100% 的数据,1 ≤ |s| ≤ 51≤∣s∣≤5,输入可能包含大、小写英文字母、数字字符、空格和行末换行符。
# include <bits/stdc++.h>
using namespace std;
int main()
{
string n;
getline(cin,n);
int l=n.length();
int u=0;
for(int i=0;i<l;i++)
{
if(n[i]>='0'&&n[i]<='9')
{
u++;
// cout<<"数字"<<endl;
}
if(n[i]>='a'&&n[i]<='z')
{
u++;
//cout<<"小写字母"<<endl;
}
if(n[i]>='A'&&n[i]<='Z')
{
//cout<<"大写字母"<<endl;
u++;
}
}
cout<<u;
}
P5734 【深基6.例6】文字处理软件
题目描述
你需要开发一款文字处理软件。最开始时输入一个字符串作为初始文档。可以认为文档开头是第 00 个字符。需要支持以下操作:
1 str
:后接插入,在文档后面插入字符串 \texttt{str}str,并输出文档的字符串。
2 a b
:截取文档部分,只保留文档中从第 aa 个字符起 bb 个字符,并输出文档的字符串。
3 a str
:插入片段,在文档中第 aa 个字符前面插入字符串 \texttt{str}str,并输出文档的字符串。
4 str
:查找子串,查找字符串 \texttt{str}str 在文档中最先的位置并输出;如果找不到输出 -1−1。为了简化问题,规定初始的文档和每次操作中的 \texttt{str}str 都不含有空格或换行。最多会有 qq 次操作。
输入格式
第一行输入一个正整数 qq,表示操作次数。
第二行输入一个字符串 \texttt{str}str,表示最开始的字符串。
第三行开始,往下 qq 行,每行表示一个操作,操作如题目描述所示。
输出格式
一共输出 nn 行。
对于每个操作 1,2,31,2,3,根据操作的要求输出一个字符串。
对于操作 44,根据操作的要求输出一个整数。
输入输出样例
输入 #1复制
4 ILove 1 Luogu 2 5 5 3 3 guGugu 4 gu输出 #1复制
ILoveLuogu Luogu LuoguGugugu 3说明/提示
数据保证,1 \leq q\le 1001≤q≤100,开始的字符串长度 \leq 100≤100。
# include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
string s0;
cin>>s0;
int m;
string s1;
for(int i=0;i<n;i++)
{
cin>>m;
switch(m)
{
case 1 :
cin>>s1;
s0.append(s1);
cout<<s0<<endl;
break;
case 2 :
int a,b;
cin>>a>>b;
s0=s0.substr(a,b);
cout<<s0<<endl;
break;
case 3 :
cin>>a;
cin>>s1;
s0.insert(a,s1);
cout<<s0<<endl;
break;
case 4 :
cin>>s1;
int y=s0.find(s1);
cout<<y<<endl;
break;
}
}
}
P1765 手机
题目描述
一般的手机的键盘是这样的:
要按出英文字母就必须要按数字键多下。例如要按出
x
就得按 9 两下,第一下会出w
,而第二下会把w
变成x
。0 键按一下会出一个空格。你的任务是读取若干句只包含英文小写字母和空格的句子,求出要在手机上打出这个句子至少需要按多少下键盘。
输入格式
一行句子,只包含英文小写字母和空格,且不超过 200 个字符。
输出格式
一行一个整数,表示按键盘的总次数。
输入输出样例
输入 #1复制
i have a dream输出 #1复制
23说明/提示
NOI 导刊 2010 普及(10)
# include <bits/stdc++.h>
using namespace std;
int main()
{
int count=0;
string a;
getline(cin,a);
int l=a.length();
for(int i=0;i<l;i++)
{
if(a[i]=='a'||a[i]=='d'||a[i]=='g'||a[i]=='j'||a[i]=='m'||a[i]=='p'||a[i]=='t'||a[i]=='w'||a[i]==' ')
{
count++;
}
if(a[i]=='b'||a[i]=='e'||a[i]=='h'||a[i]=='k'||a[i]=='n'||a[i]=='q'||a[i]=='u'||a[i]=='x')
{
count=count+2;
}
if(a[i]=='c'||a[i]=='f'||a[i]=='i'||a[i]=='l'||a[i]=='o'||a[i]=='r'||a[i]=='v'||a[i]=='y')
{
count=count+3;
}
if(a[i]=='s'||a[i]=='z')
{
count=count+4;
}
}
cout<<count;
}