PAT-B 1026~1030 C++

PAT-B 1026 程序運行時間
AC代碼

#include<iostream>
using namespace std;
int main(){
	int c1,c2,clk=100;
	cin>>c1>>c2;
	float time=(c2-c1)*1.0/clk;//以秒爲單位 
	int hour,min,second;
	hour=time/3600;
	min=(int)(time/60)%60;
	second=(int)time%60;
	if(time-(int)time>=0.5) second++;
	printf("%02d:%02d:%02d",hour,min,second);
	return 0;
} 

PAT-B 1027 打印沙漏
思路:定義數組v存儲每行的奇數,控制輸出字符與空格即可。
AC代碼

#include<iostream>
#include<vector>
using namespace std;
int main(){
	int N; char c;
	cin>>N>>c;
	int sum=(N+1)/2,n=0;//sum單次總共的奇數
	vector<int> v; 
	for(int i=1;n+i<=sum;i+=2) {
		if(n<sum) {
			v.push_back(i);
			n+=i;
		}
	}
	for(int i=v.size()-1;i>=0;i--) {
		for(int j=i;j<v.size()-1;j++) cout<<" ";
		for(int j=0;j<v[i];j++) cout<<c;
		cout<<endl;
	}
	for(int i=1;i<v.size();i++) {
		for(int j=i;j<v.size()-1;j++) cout<<" ";
		for(int j=0;j<v[i];j++) cout<<c;
		cout<<endl;
	}
	cout<<N-(n*2-1);
	return 0;
}

PAT-B 1028 人口普查
廢話:本來看見題目慣性思維,定義一個結構體,後來發現輸出不用涉及存儲結構體 完全沒必要 這題真的不難想 但真的是調試了半天 就在於起初就想要用結構體 快寫完了 寫輸出的時候發現根本不用 又回去改代碼
注1:主要注意年齡大於200以及未出生的 條件即可
AC代碼

#include<iostream>
using namespace std;
int main(){
	int N,maxy=-1,maxm,maxd,miny=9999,minm,mind,sum=0;
	cin>>N;
	string smax,smin;
	for(int i=0;i<N;i++) {
		getchar();
		string n; int y,m,d;
		cin>>n;
		scanf("%d/%d/%d",&y,&m,&d);
		if(y<1814||(y==1814&&(m<9||(m==9&&d<6)))) continue;//年齡大於200
		if(y>2014||(y==2014&&(m>9||(m==9&&d>6)))) continue;//未出生
		sum++;
		if(y<miny||(y==miny&&(m<minm||(m==minm&&d<mind)))) {
			miny=y; minm=m;mind=d;
			smin=n;
		}
		if(y>maxy||(y==maxy&&(m>maxm||(m==maxm&&d>maxd)))) {
			maxy=y; maxm=m;maxd=d;
			smax=n;
		}
	}
	if(sum!=0) cout<<sum<<" "<<smin<<" "<<smax;
	else cout<<sum<<endl;//測試點3 
	return 0;
}

PAT-B 1029 舊鍵盤
思路:
step1:定義一個acsii的數組,數組下標對應字符的ASCII值,初始化爲0,若其值爲1則證明,該字符在之前已經判斷過了;
step2:同時循環判斷兩個字符串str1(循環變量i)與str2(循環變量j),若str1[i]!=str[j]&&ascii[str1[i]]==0 說明該字符鍵盤壞了且使第一次判斷 將值存入數組v中 且更改相應ascii值(大小寫都要更改)
step3:輸出數組v
AC代碼

#include<iostream>
#include<cctype>
#include<vector>
#include<cstring>
using namespace std;
int main(){
	string str1,str2;
	cin>>str1>>str2;
	vector<char> v;
	int ascii[128]={0};
	for(int i=0,j=0;i<str1.length();i++){
		if(str1[i]==str2[j]){
			j++;
			continue;
		}
		if(str1[i]!=str2[j]&&ascii[str1[i]]==0){
			if(isdigit(str1[i])) v.push_back(str1[i]);
			else if(islower(str1[i])){
				ascii[toupper(str1[i])]=1;
				v.push_back(toupper(str1[i]));
			} 
			else {
				ascii[tolower(str1[i])]=1;
				v.push_back(str1[i]);
			} 
			ascii[str1[i]]=1;
		} 
	}
	for(int i=0;i<v.size();i++) cout<<v[i];
	return 0;
}

PAT-B 1030 完美數列
AC代碼

#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int main(){
	int N; long long int p;
	cin>>N>>p;
	vector<int> v(N);
	for(int i=0;i<N;i++) cin>>v[i];
	sort(v.begin(),v.end());
	int len,maxlen=0;
	for(int i=0;i<v.size();i++){
		for(int j=i+maxlen;j<v.size();j++){
			if(v[j]<=v[i]*p){
				len=j-i+1;
				if(len>maxlen) maxlen=len;	
			} else break;
		}
	}
	cout<<maxlen;
	return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章