【PAT乙级】1003 我要通过! (20 分)详解
https://pintia.cn/problem-sets/994805260223102976/problems/994805323154440192
这道题题目很难懂,本题的本质是找规律。
首先分析题目不难看出以下条件:
- P A T 三个字母必须都有,且只有这三个字母 且 P T 只能出现一次。
- P 和 T 之间必须至少有一个A
问题的难点就在于第三个条件上
下图转自: https://www.freesion.com/article/79691103906/
可以发现规律: 前段A的数量 * 中间A的数量 = 后端A的数量
总的代码如下:
#include<cstdio>
#include<iostream>
#include<map>
using namespace std;
int main(void)
{int n; cin>>n;while(n--) {string s; cin>>s;map<char,int>mp;int p=0,t=0;for(int i=0;i<s.size();i++){mp[s[i]]++;if(s[i]=='P') p=i;//记录 P 的位置if(s[i]=='T') t=i;//记录 T 的位置}if(mp.size()==3&&mp['T']==1&&mp['P']==1&&(t-p>1)&&mp['A']!=0&&p*(t-p-1)==(s.size()-1-t))// 仅有三个字母 T的数量是1 P的数量是1 P和T中间有A字母 前段A的数量 * 中间A的数量 = 后端A的数量cout<<"YES"<<endl;elsecout<<"NO"<<endl;}
}
#include<bits/stdc++.h>
using namespace std;
int main(void)
{int n; cin>>n;for(int i=1;i<=n;i++){string s; cin>>s;map<char,int>mp;bool flag=false;for(int i=0;i<s.size();i++)mp[s[i]]++;if(mp.size()==3&&mp['P']==1&&mp['A']&&mp['T']==1) {int l=s.find('P');int r=s.find('T');int len1=l,len2=r-l+1-2,len3=s.size()-r-1;if(r-l>1&&len1*len2==len3) flag=true;}if(flag) cout<<"YES";else cout<<"NO";if(i!=n) puts("");}
}
如果还不懂可以看以下几个写的好的博客:
方案一
方案二
【PAT乙级】1003 我要通过! (20 分)详解相关推荐
- PAT 乙级 1069 微博转发抽奖 (20 分)
题目:PAT 乙级 1069 微博转发抽奖 (20 分) 经验总结: 可以建立一个set,用于存放中奖用户.若set中有此用户,代表此用户已中奖,奖品顺延. C++代码: #include<bi ...
- PAT乙级 1032 挖掘机技术哪家强 (20 分)
1032 挖掘机技术哪家强 (20 分) 为了用事实说明挖掘机技术到底哪家强,PAT 组织了一场挖掘机技能大赛.现请你根据比赛结果统计出技术最强的那个学校. 原题链接 代码 #include < ...
- PAT 乙级 1032 挖掘机技术哪家强 (20分)
1032 挖掘机技术哪家强 (20分) 为了用事实说明挖掘机技术到底哪家强,PAT 组织了一场挖掘机技能大赛.现请你根据比赛结果统计出技术最强的那个学校. 输入格式: 输入在第 1 行给出不超过 10 ...
- PAT乙级 1033 旧键盘打字 (20 分)
1033 旧键盘打字 (20 分) 旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现.现在给出应该输入的一段文字.以及坏掉的那些键,打出的结果文字会是怎样? 原题链接 代码 #incl ...
- PAT 乙级 1094 谷歌的招聘 (20分)
我的个人网站 Cheese的个人主页http://www.cheese.ren/ 博客来源 PAT 乙级 1094 谷歌的招聘-Cheese的个人博客PAT 乙级 1094 谷歌的招聘 C++http ...
- PAT乙级 | 1069 微博转发抽奖 (20分)
小明 PAT 考了满分,高兴之余决定发起微博转发抽奖活动,从转发的网友中按顺序每隔 N 个人就发出一个红包.请你编写程序帮助他确定中奖名单. 输入格式: 输入第一行给出三个正整数 M(≤ 1000). ...
- PAT乙级1069微博转发抽奖 20(分)
题目 小明 PAT 考了满分,高兴之余决定发起微博转发抽奖活动,从转发的网友中按顺序每隔 N 个人就发出一个红包.请你编写程序帮助他确定中奖名单. 输入格式: 输入第一行给出三个正整数 M( ≤ \l ...
- PAT乙级 | 1094 谷歌的招聘 (20分)
2004 年 7 月,谷歌在硅谷的 101 号公路边竖立了一块巨大的广告牌(如下图)用于招聘.内容超级简单,就是一个以 .com 结尾的网址,而前面的网址是一个 10 位素数,这个素数是自然常数 e ...
- 【PAT乙级】1044 火星数字 (20 分)
题目地址 #include<bits/stdc++.h> using namespace std; string a[13]={"tret","jan&quo ...
最新文章
- 盘点2021年九大最好用的人脸识别软件
- AJAX初探,XMLHttpRequest介绍
- android通用的UUID唯一标示符
- 树莓派python开发工具哪个好_Thonny——树莓派上Python的最新IDE
- 【TensorFlow-windows】keras接口——ImageDataGenerator裁剪
- js jq 一些属性
- java去除字符串中的特定字符
- 5.5.35 - mysql 同步_MySQL 5.6.35主从同步配置案例
- 【车型识别】基于小波和盒维数实现车型识别含Matlab源码
- win10系统打开tftp服务器,win10设置tftp服务器配置
- struts2拦截器的一个使用实例
- pythonobject转int_在Python中将元组转换为int
- 《郭论》郭德纲/著 读后得2021-02-22
- 饿了么客户端透明代理 Samaritan详细介绍
- css伪类加垂直分割线
- 微信小程序授权登录和获取手机号功能(详细)
- 学习笔记-----Material design
- ChatGPT版必应发飙!怒斥人类:放尊重些
- java 狗带风波_狗狗风波
- 每日(一文 SleepPoseNet: Multi-View Learning for Sleep Postural Transition Recognition Using UWB