PAT-B 1006~1010 C++

第2组 50min


PAT-B 1006 换个格式输出整数
AC代码:

#include<iostream>
using namespace std;
int main(){
	int num;
	cin>>num;
	int B=num/100;//百位数字
	int G=num%10;//各位数字
	int S=(num/10)%10;//十位数字
	for(int i=0;i<B;i++) cout<<"B";
	for(int i=0;i<S;i++) cout<<"S";
	for(int i=1;i<=G;i++) cout<<i; 
	return 0;
} 

PAT-B 1007 素数对猜想
分析:用数组存储在N中的所有素数,遍历找相邻素数间差值为2
注1:因为每次总数找相邻两个的素数,即v[i+1]与v[i]差值,所以i<v.size()-1。若是i<v.size()最后i+1就得溢出

#include<iostream>
#include<vector>
using namespace std;
bool isPrime(int n){
	for(int i=2;i*i<=n;i++){
		if(n%i==0) return false;
	}
	return true;
} 
int main(){
	int N,count=0;
	cin>>N;
	vector<int> v;//存储N中的素数 
	for(int i=2;i<=N;i++){
		if(isPrime(i)) v.push_back(i);
	}
	for(int i=0;i<v.size()-1;i++){//注1
		if(v[i+1]-v[i]==2) count++;
	}
	cout<<count<<endl;
	return 0;
}

PAT-B 1008 数组元素循环右移问题
分析:题要求“不使用额外数组”,且“移动次数小”。需要想到将两个数组首尾相接在一起。例:原数组为1,2,3 相接为1,2,3,1,2,3这样从N-M+i开始连续输出N个数,就得数组元素右移M位的数组。
注1(测试点1,2):右移的位数M可能大于N 所以需要取余 即M=M%N
AC代码:

#include<iostream>
using namespace std;
int main(){
	int N,M,flag=0;
	cin>>N>>M;
	int num[2*N];
	for(int i=0;i<N;i++){
		cin>>num[i];
		num[i+N]=num[i];
	}
	M=M%N;
	for(int i=0;i<N;i++){
		if(flag) cout<<" ";
		cout<<num[N-M+i];
		flag=1;
	}
	return 0;
}

PAT-B 1009 说反话
分析:“有空格”,所以用getline读取一行。由于反转是单词之间的反转,不需要反转单词中的字母,所以,需要按照空格分离出每个单词,加入数组中,随后,反转数组,即可。
AC代码

#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
using namespace std;
int main(){
	string str;
	getline(cin,str);
	vector<string> v;
	for(int i=0;i<str.length();i++){
		int j=i;
		while(j<str.length()&&str[j]!=' ') j++;
		v.push_back(str.substr(i,j-i));
		i=j;
	}
	reverse(v.begin(),v.end());
	int flag=0;
	for(int i=0;i<v.size();i++){
		if(flag) cout<<" ";
		cout<<v[i];
		flag=1;
	}
	return 0;
}

PAT-B 1010 一元多项式

#include<iostream>
using namespace std;
int main(){
	int coe,index,flag=0;//分别表示系数与指数
	while(cin>>coe>>index){
		if(flag==0&&index==0){
			cout<<"0 0";
			break;
		} 
		if(index){
			if(flag) cout<<" ";
			if(index!=0) cout<<coe*index<<" "<<index-1;
			flag=1;
		}
	} 
	return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章