PAT练习(九)---待改

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
第二个数 2
3
第三个数 32
第四个数 4
1
测试点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

在这里插入代码片
发布了43 篇原创文章 · 获赞 4 · 访问量 6129

猜你喜欢

转载自blog.csdn.net/didadu/article/details/100085919