PAT1003B 我要通过! (20 分)
https://pintia.cn/problem-sets/994805260223102976/problems/994805323154440192
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
bool isTrue(){
int cntP=0,cntT=0,postP=-1,postT=-1;
string str;
cin>>str;
for(int j=0;j<str.length();j++){
if(str[j]!='P'&&str[j]!='A'&&str[j]!='T'){
return false;
}
if(str[j]=='P'){
postP=j;
cntP++;
}
else if(str[j]=='T'){
postT=j;
cntT++;
}
}
if(cntP!=1||cntT!=1||(postP*(postT-postP-1)!=(str.length()-postT-1))||(postT-postP)<2){
return false;
}
return true;
}
int main(){
int n=0;
cin>>n;
for(int i=0;i<n;i++){
if(isTrue()){
cout<<"YES"<<endl;
}
else{
cout<<"NO"<<endl;
}
}
return 0;
}
PAT1019B 数字黑洞 (20 分)/1069A
https://pintia.cn/problem-sets/994805260223102976/problems/994805302786899968
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
bool cmp(int a,int b){
return a>b;
}
void toArray(int number,int num[]){
for(int i=0;i<4;i++){
num[i]=number%10;
number=number/10;
}
}
int toNumber(int num[]){
int sum=0;
for(int i=0;i<4;i++){
sum=sum*10+num[i];
}
return sum;
}
int main(){
int number,a,b,c,num[5];
cin>>number;
while(1){
toArray(number,num);
sort(num,num+4);
b=toNumber(num);
sort(num,num+4,cmp);
a=toNumber(num);
c=a-b;
number=c;
printf("%04d - %04d = %04d\n",a,b,c);
if(number==0||number==6174){
break;
}
}
return 0;
}
PAT1049B 数列的片段和 (20 分)/1104A
https://pintia.cn/problem-sets/994805260223102976/problems/994805275792359424
通过研究可知 第i个数在相加过程中出现次数为:i*(n-i+1)
第一个数 14
第二个数 23
第三个数 32
第四个数 41
测试点2.3错误,总分15分。不知道哪些案例有问题
#include<iostream>
#include<cstdio>
using namespace std;
int main(){
int n=0;
cin>>n;
double a[100005]={0.0},sum=0;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=n;i++){
sum=sum+i*(n-i+1)*a[i];
}
printf( "%.2lf", sum );
return 0;
}
PAT1008A Elevator (20 分)
https://pintia.cn/problem-sets/994805342720868352/problems/994805511923286016
#include<cstdio>
#include<iostream>
using namespace std;
int main(){
int n,sum=0,key=0;
cin>>n;
for(int i=0;i<n;i++){
int number=0;
cin>>number;
if(key<number){
sum=sum+(number-key)*6+5;
}
else if(key>number){
sum=sum+(key-number)*4+5;
}
else sum=sum+5;
key=number;
}
cout<<sum;
return 0;
}
PAT1049A Counting Ones
https://pintia.cn/problem-sets/994805342720868352/problems/994805430595731456
测试点4.6运行超时
#include<cstdio>
#include<iostream>
using namespace std;
int main(){
int n,cnt=0;
cin>>n;
for(int i=0;i<=n;i++){
int number=i;
while(number>0){
if(number%10==1) cnt++;
number=number/10;
}
}
cout<<cnt;
return 0;
}
PAT1008B 数组元素循环右移问题 (20 分)
https://pintia.cn/problem-sets/994805260223102976/problems/994805316250615808
#include<iostream>
#include<cstdio>
using namespace std;
int main(){
int arr[110]={0},n,m;
cin>>n>>m;
for(int i=0;i<n;i++){
cin>>arr[i];
}
m=m%n;
if(n==1){
cout<<arr[0]<<endl;
}
else if(m==0){
cout<<arr[0];
for(int i=1;i<n;i++){
cout<<" "<<arr[i];
}
}
else{
cout<<arr[n-m];
for(int i=n-m+1;i<n;i++){
cout<<" "<<arr[i];
}
for(int i=0;i<n-m;i++){
cout<<" "<<arr[i];
}
}
return 0;
}
PAT1081A Rational Sum (20 分)
https://pintia.cn/problem-sets/994805342720868352/problems/994805386161274880
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int measure(int x,int y){
int a=x,b=y;
while(a != b){
if(a>b){
a = a - b;
}
else {
b = b - a;
}
}
return a;
}
int main(){
long long num[110]={0};
long long den[110]={0};
long long n,sum=0,a=0,b=0,c=0,max=0;
cin>>n;
for(int i=0;i<n;i++){
scanf("%d/%d",&num[i],&den[i]);
if(den[i]>c){
c=den[i];
}
}
for(int i=0;i<n;i++){
num[i]=num[i]*(c/den[i]);
sum=sum+num[i];
}
a=sum/c;
b=sum%c;
if(b>0&&c>0){
max=measure(b,c);
b=b/max;
c=c/max;
printf("%d %d/%d",a,b,c);
}
else if(a>0) cout<<a;
else printf("%d/%d",b,c);
return 0;
}
修改
在这里插入代码片
PAT1034B/1088A
在这里插入代码片