马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
快考pat乙级了,花了十块钱做了一下去年冬天的pat乙级,不难,现在在花ac之后的时间来写文章,默默许愿几天后的也不难,但是我们也要做好准备啊~
B-1 谣言检测仪
分数 15 作者 陈越 单位 浙江大学
喜欢用大图看题目的点这里哦,为你们准备啦
谣言有很多种,本题请你设计一种检测仪,专门针对一类吹牛话术进行验证。有人喜欢吹牛,说自己做一场报告有 N 次掌声。现给定这个人的报告录音文字版,其中如果有掌声,记录中会出现 (zhangsheng) 字样。请你统计一下报告过程中到底出现了多少次掌声,并且与其说出的掌声次数做个比较,来判断这是不是谣言。
输入格式:
输入在第一行给出一个不超过 100 的正整数 N,即某人号称自己收获的掌声次数。
随后给出由英文字母、数字、标点符号(包括 ,、.、;、:、!)、空格、回车、以及 (zhangsheng) 组成的报告文本,为不超过 10^5个字符的非空字符串,其中语音记录的文本以 #结尾。
输出格式:
首先输出语音记录中真实的掌声次数。如果真实次数不小于 N,则随后空 1 格输出 True;否则输出 False。- 输入样例 1:
- 3
- Hello (zhangsheng). Glad to meet everyone(zhangsheng).
- See you (zhangsheng) next time.#
- 输出样例 1:
- 3 True
- 输入样例 2:
- 3
- Hello (zhangsheng). Glad to meet everyone(zhang
- sheng). Let me hear your zhangsheng!\#
- 输出样例 2:
- 1 False
复制代码 思路:
一看这道题,要读入含回车的字符串好麻烦,没法使用string直接读入。那只能转c语言里面的getchar(),只需要判断以'#'结尾就行。
其实你硬要使用string读也可以,只是我这样更简单,完全可以在每次读入后做一次检查,然后结束输入就行
代码
[code]#includeusing namespace std;char a[100010];int main(){ int n,i=0;cin>>n; do{ a[i++]=getchar(); }while(a[i-1]!='#'); string b(a,a+i); //string c="(zhangsheng)"; int cnt=0;//count(b.begin(),b.end(),'(');没有使用count直接数字符串的功能 while(b.find("(zhangsheng)")!=string::npos){ b.erase(b.find("(zhangsheng)"),12); cnt++;//使用计数 } cout |