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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章