淘淘与蓝蓝之哔哩哔哩
_2KMnO4
·
·
个人记录
题目描述
淘淘自从沾染了浏览哔哩哔哩弹幕视频网站的优秀兴趣,就对蓝蓝视而不见。蓝蓝内心感到万分悲痛,于是也开始学习有关哔哩哔哩的相关知识。
已知哔哩哔哩主站上有n个视频,每部视频的名称是一个仅有大小写字母、数字和空格组成的字符串。
其中,淘淘喜爱由大写字母开头或者是字符串中的大写字母严格多于小写字母的视频。而蓝蓝却喜爱含有偶数个(包括0)小写字母并且以数字结尾的视频。
现在请你写一个程序来判断淘淘以及蓝蓝所喜爱的视频数量。
输入
输入文件的第一行包含一个正整数n,代表bilibili上视频的数量。
第二行至第n+1行每行包含一个字符串,表示每部视频的名称。
输出
输出文件包含一行两个正整数,分别表示淘淘和蓝蓝所喜爱的视频数量。
样例输入
5
WHITE ALBUM2 13
A Certain Scientific RailgunT 11
NO GAME NO LIFE ZERO
Beat Saber Arrogant person The NO1
The Shawshank Redemption 1080P
样例输出
5 2
提示:
【输入输出样例说明】
所有字符串都是由大写字母开头的,所以淘淘喜欢全部5个字符串。
只有第1、4个字符串的小写字母为偶数个且以数字结尾,所以蓝蓝喜欢两个字符串。
【数据规模与规定】
对于20%的数据,满足所有字符串均仅由大写字母构成。
对于40%的数据,满足所有字符串均仅由大写字母和数字构成。
对于60%的数据,满足所有字符串没有空格。
对于100%的数据,满足1<=n<=100,1<=|S|<=100,S仅有大小写字母、数字和空格组成。
【提示】
严格多于指在数量上大于。
```cpp
#include <iostream>
#include <cstdio>
using namespace std;
int main() {
int n, len, clower, cupper, ans1 = 0, ans2 = 0;
//clower统计字符串中的小写字母个数,cupper统计大写字母个数
//ans1是淘淘喜欢的字符串的个数,ans2是蓝蓝喜欢的字符串的个数
string str;
scanf("%d", &n);
getline(cin, str);
//大坑点:string读入多行字符串的时候,需要吃掉n后面的'\n',不然会给算一个字符串。
for (int i = 0; i < n; i++) {
getline(cin, str);
len = str.size();
clower = cupper = 0;
for (int j = 0; j < len; j++) {
if (str[j] >= 'a' && str[j] <= 'z') {//可以用islower()
clower++;
} else if (str[j] >= 'A' && str[j] <= 'Z') {//可以用isupper()
cupper++;
}
}
if ((str[0] >= 'A' && str[0] <= 'Z') || cupper > clower) {
ans1++;
}
if ((clower % 2 == 0 || clower == 0) && (str[len - 1] >= '0' && str[len - 1] <= '9')) {
ans2++;
}
}
printf("%d %d", ans1, ans2);
return 0;
}
```