4、一个小球从10m处落下,每次的弹回之前的高度一半,请问小球在静止之前一共走过多少距离。
思路
初始距离即为小球高度,此后依次加上先前高度一半的两倍,直到高度<=0。
具体实现
#include<iostream>
using namespace std;
int main(){
double h=10.0;
double d=10.0;
while(h>0){
h/=2;
d+=h*2;
}
cout<<d;
}
5、我要通过!
“答案正确"是自动判题系统给出的最令人欢喜的回复。本题属于PAT 的“答案正确”大派送——只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”。
得到“答案正确”的条件是: 1.字符串中必须仅有P、A、T这三种字符,不可以包含其它字符; 2.任意形如xPATx的字符串都可以获得“答案正确”,其中x或者是空字符串,或者是仅由字母A组成的字符串; 3.如果aPbTc是正确的,那么 aPbATca也是正确的,其中 a、b、c均或者是空字符串,或者是仅由字母 A组成的字符串。 现在就请你为PAT写一个自动裁判程序,判定哪些字符串是可以获得“答案正确”的。
输入格式:
每个测试输入包含1个测试用例。第1行给出一个正整数n(<=10),是需要检测的字符串个数。接下来每个字符串占一行,字符串长度不超过100,且不包含空格。
输出格式:
每个字符串的检测结果占一行,如果该字符串可以获得“答案正确”,则输出YES,否则输出NO。
输入样例:
10
PAT
PAAT
AAPATAA
AAPAATAAAA
xPATx
PT
Whatever
ΑΡAAAΤAA
APT
ΑΡATΤAA
输出样例:
YES
YES
YES
YES
NO
NO
NO
NO
NO
NO
具体实现
#include<iostream>
#include<string>
using namespace std;
int main(){
int numOfString;
while(cin>>numOfString)
{
string* strings=new string[numOfString];
for(int i=0;i<numOfString;i++){
cin>>strings[i];
bool flag=true;
for(int j=0;j<(int)strings[i].length();j++){
if(strings[i][j]!='P'&&strings[i][j]!='A'&&strings[i][j]!='T')
{
flag=false;
break;
}
}
size_t size=NULL;
size_t first_p=strings[i].find('P',size);
size_t first_t=strings[i].find('T',size);
int first_gap=first_p;
int second_gap=first_t-first_p-1;
int third_gap=strings[i].length()-first_t-1;
if(first_gap*second_gap!=third_gap)
flag=false;
if(second_gap==0)
flag=false;
if(flag==false){
cout<<"NO"<<endl;
}
else{
cout<<"YES"<<endl;
}
}
}
}