PAT-B 1036~1040 C++

1.5h 1040卡


PAT-B 1036 跟奧巴馬一起編程
注1:注意行數計算 四捨五入
AC代碼

#include<iostream>
using namespace std;
int main(){
	int N,lineNum=0;
	char c;
	cin>>N>>c;
	float h=N*1.0/2;
	if(h-(int)h>=0.5) lineNum=(int)h+1;
	else lineNum=(int)h;
	for(int i=0;i<lineNum;i++){
		if(i==0||i==lineNum-1) 
			for(int j=0;j<N;j++) cout<<c;
		else {
			for(int j=0;j<N;j++){
				if(j==0||j==N-1) cout<<c;
				else cout<<" ";
			}
		}
		cout<<endl; 
	}
	return 0;
} 

PAT-B 1037 在霍格沃茨找零錢
注1:其實就是模擬減法 只是第二位數進制是29 第三位數進制是17

#include<iostream>
using namespace std;
int main(){
	int PG,PS,PK,AG,AS,AK,RG,RS,RK;
	scanf("%d.%d.%d %d.%d.%d",&PG,&PS,&PK,&AG,&AS,&AK);
	if(AG>PG||(AG==PG&&(AS>PS||(AS==PS&&AK>PK)))){//實付>應付 
		if(AK>=PK) RK=AK-PK;
		else { RK=AK+29-PK; AS--;}
		if(AS>=PS) RS=AS-PS;
		else { RS=AS+17-PS; AG--;}
		RG=AG-PG;
	} else if(AG==PG&&AS==PS&&AK==PK) RG=RS=RK=0;//最後測試點 
	else{
		cout<<"-";
		if(PK>=AK) RK=PK-AK;
		else { RK=PK+29-AK; PS--;}
		if(PS>=AS) RS=PS-AS;
		else { RS=PS+17-AS; PG--;}
		RG=PG-AG;
	}
	cout<<RG<<"."<<RS<<"."<<RK;
	return 0;
}

PAT-B 1038 統計同成績學生
注1:第一次用cin cout 最後測試點超時 改成了scanf printf

#include<iostream>
using namespace std;
int main(){
	int N,K;
	cin>>N;
	int grade[101]={0};//下標對應學生成績 存儲成績人數
	for(int i=0;i<N;i++){
		int g;	
		cin>>g;
		grade[g]++;
	} 
	cin>>K;
	for(int i=0;i<K;i++){
		int gg;
		scanf("%d",&gg);
		if(i!=0) printf(" ");
		printf("%d",grade[gg]);
	}
	return 0;
} 

PAT-B 1039 到底買不買
思路:定義Int型數組ascii 下標就是ASCII值 存儲攤主的珠串顏色及個數;循環小紅想要的珠串 對比ascii數組 看夠不夠

#include<iostream>
#include<cstring>
using namespace std;
int main(){
	string str1,str2;
	getline(cin,str1);
	getline(cin,str2);
	int ascii[128]={0};//下標對應字符 存儲個數 
	for(int i=0;i<str1.length();i++) ascii[str1[i]]++;
	int num=0;//記錄缺失個數 
	for(int i=0;i<str2.length();i++){
		if(ascii[str2[i]]) ascii[str2[i]]--;
		else num++;
	}
	if(num) cout<<"No "<<num;
	else cout<<"Yes "<<str1.length()-str2.length();
	return 0;
}

PAT-B 1040 有幾個PAT
這道題自己卡住,思路不對 百度了
分析:由題並不是所有的P的個數A的個數T的個數都可以組成PAT,只有那些仍按PAT順序排列的個數纔是有效的。
這樣想要得到PAT的個數,假如現在當前字符是’T’,需要找當前字符前有幾個‘PA’能和此’T’組PAT;想要PA個數,要看當前字符’A’前有幾個’P’能和此’A’組成PA

#include<iostream>
#include<cstring>
using namespace std;
int main(){
	string s;
	getline(cin,s);
	int num1=0,num2=0,num3=0,i=0;
	while(i<s.length()){
		if(s[i]=='P') num1++;
		if(s[i]=='A') num2=(num1+num2)%1000000007;
		if(s[i]=='T') num3=(num2+num3)%1000000007;
		i++;
	} 
	printf("%d",num3);
	return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章