1003 我要通过! (20分)
“答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于 PAT 的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”。
得到“答案正确”的条件是:
字符串中必须仅有 P、 A、 T这三种字符,不可以包含其它字符;
任意形如 xPATx 的字符串都可以获得“答案正确”,其中 x 或者是空字符串,或者是仅由字母 A 组成的字符串;
v 如果 aPbTc 是正确的,那么 aPbATca 也是正确的,其中 a、 b、 c 均或者是空字符串,或者是仅由字母 A 组成的字符串。
现在就请你为 PAT 写一个自动裁判程序,判定哪些字符串是可以获得“答案正确”的。
分析:
我太蠢了,完全没看懂题。看了大佬的解析才懂点,代码也是看了之后才写的。注意其中 a、 b、 c 均或者是空字符串。看了解析才发现。。。abc 必须同时是空格或者A(不一定是一个A。。可以是多个A)。。。。所以规律是:其中 a、 b、 c 均或者是空字符串(第二条也满足了)
代码:
#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
int main()
{
int n,p,t;
cin>>n;
for(int i=0;i<n;i++)
{
string s;
cin>>s;
map<char,int> m;
for(int j=0;j<s.size();j++)
{
m[s[j]]++;
if(s[j]=='P')
p=j;
if(s[j]=='T')
t=j;
}
//分别对应的条件是 P只有1个 T只有1个 A必须有 map的键值只有PAT三种 P前面的A的个数*中间A的个数=最后的A的个数
if(m['P']==1&&m['T']==1&&m['A']!=0&&m.size()==3&&t-p!=1&&p*(t-p-1)==s.size()-t-1)
printf("YES\n");
else
printf("NO\n");
}
}
1007 素数对猜想 (20分)
分析:
不知道为啥,我想到了递归。递归停止条件:大于N。不过大佬写的是从5开始判断i与i-2是不是都是素数,如果是counts+1。
代码:
#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
bool is_prime(int i)
{
bool flag=true;
for(int m=2;m<=sqrt(i);m++)
{
if(i%m==0)
{
flag=false;
break;
}
}
return flag;
}
int co(int i,int n)
{
int k=i+1;
while(!is_prime(k))
k++;
if(k>n)
return 0;
else if(k-i==2)
return co(k,n)+1;
else
return co(k,n);
}
int main()
{
int N;
cin>>N;
int counts=0;
counts=co(2,N);
cout<<counts;
}
p.s.今天又被虐了 不过还好没有爆零 AC了两道 哭哭咯 加油吧 没想到新手入门比赛都这么不友好