A
解题思路:用字符串数组做,这里没有QA开头和结尾限制。
遍历数组,Q则加一,A则减一,结果为正即为YES。
测试语句:
5 4 QQAA 4 QQAQ 3 QAA 1 Q 14 QAQQAQAAQQQAAA
WA代码:
#include<bits/stdc++.h>
using namespace std;
string str;
int main()
{
int n,i,length,q;
cin>>n;
while(n--){
q=0;
cin>>length;
cin>>str;
for(i=0;i<=length;i++){
if(str[i]=='Q')q++;
else q--;
if(q<0)q=0;
}
if(q)cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
return 0;
}
现在也不知道为啥……
AC代码:
#include<bits/stdc++.h>
using namespace std;
string str;
int n,i,length,q;
int main()
{
cin>>n;
while(n--){
q=0;
cin>>length;
cin>>str;
for(i=0;i<length;i++){
if(str[i]=='Q')q++;
else q--;
if(q<0)q=0;
}
if(q)cout<<"NO"<<endl;
else cout<<"YES"<<endl;
}
return 0;
}
B
思路:用字符串数组逐个对比检查即可。
AC代码(用的c):
#include <stdio.h>
#include <string.h>
int n;
char s[1000];
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%s",&s);
if((s[0]=='Y'||s[0]=='y')&&(s[1]=='E'||s[1]=='e')&&(s[2]=='S'||s[2]=='s')){
printf("YES\n");
}
else{
printf("NO\n");
}
}
return 0;
}
C
解题思路:暴力破解,递除法取各项位数,分别相加比较即可。
AC代码:
#include<stdio.h>
int main()
{
int front=0;
int back=0;
int n=0;
int i=0;
int g,s,b,q,w,sw;
int number;
scanf("%d",&n);
//n=2;
int num[n];
{
for(i=0;i<n;i++)
scanf("%d",&num[i]);
//num[i]=123123;
for(i=0;i<n;i++)
{
number=num[i];
g=number%10;
number/=10;
s=number%10;
number/=10;
b=number%10;
number/=10;
q=number%10;
number/=10;
w=number%10;
number/=10;
sw=number%10;
number/=10;
front=sw+w+q;
back=b+s+g;
if(front==back)
printf("YES\n");
//front=1;
else
printf("NO\n");
//back=1;
}
}
return 0;
}
E
思路:分别建立数组,比较字符数组元素相同时对应数字数组元素是否相同,再反过来。
WA代码╮( ̄⊿ ̄)╭:
#include<bits/stdc++.h>
using namespace std;
int num[100];
char str[100];
int main()
{
int n;
int total;
int i;
int j;
int t;
int mark=1;
cin>>total;
for(i=0;i<total;i++)
{
cin>>n;
for(i=0;i<n;i++)
{
cin>>num[n];//数字到num
}
for(i=0;i<n;i++)
{
cin>>str[n];//字母到str
}
for(i=0;i<n-1;i++)//如果数字相同而字母不同,mark=0
{
t=str[i];
for(j=0;j<n-1;j++)
{
if(t==num[j])
{
if(str[i]=str[j])
{
mark=0;
}
}
}
}
for(i=0;i<n-1;i++)//如果字母相同而数字不同,mark=0
{
t=num[i];
for(j=0;j<n-1;j++)
{
if(t==str[j])
{
if(num[t]!=num[i])
{
mark=0;
}
}
}
}
if(mark)
{
cout<<"NO";
}
else
{
cout<<"YES";
}
}
return 0;
}
F
解题思路:循环列出i二次方和三次方直到所给数,再减去六次方。
AC代码:
#include<bits/stdc++.h>
using namespace std;
int a[100000];
int main()
{
int n;
int num;
int cnt=0;
int i;
int k=0;
cin>>n;
while(n--){
cin>>num;
for(i=1;i*i*i<=num;i++)cnt++;
for(i=1;i*i<=num;i++)cnt++;
for(i=1;i*i*i*i*i*i<=num;i++)cnt--;
a[k]=cnt;
k++;
cnt =0;
}
for(i=0;i<k;i++){
cout<<a[i]<<endl;
}
return 0;
}