【來一波乾貨~浙大PAT乙級全題索引表】思路+分析+題解+AC程式碼,C++版(內含做題技巧及經驗)

2020-10-07 11:01:01

前言

PAT乙級終於脫坑了,本來是去年就該完成的,一直拖著,甲級也刷了一半了,現在先把乙級放出來,說一下博主個人的看法。一直都記得一個老師對我們說的話:演演算法體現的是一個程式設計師基本的素質。博主很贊同這句話,因為演演算法體現了一個程式設計師的思維,而且學習演演算法可能是一個枯燥的過程,想提高演演算法是很難的。對比一下甲級和乙級,博主個人以為,乙級更像是在考察解決問題的能力,涉及的演演算法並多,資料結構也只有連結串列,而甲級考察的則是英文閱讀能力以及一些演演算法能力,比如拓撲排序、並查集等,同時也涉及到了圖和樹。每次PAT考試時,乙級後兩題即是甲級前兩題。在比賽中,使用c語言參考的人也不少,在這裡博主建議用c++,主要的原因是比較方便,好了,先把題庫分享出來吧,這些都是博主自己的AC程式碼。

題解

題目資訊分值
PAT乙級 | 1001 害死人不償命的(3n+1)猜想15
PAT乙級 | 1002 寫出這個數20
PAT乙級 | 1003 我要通過!20
PAT乙級 | 1004 成績排名20
PAT乙級 | 1005 繼續(3n+1)猜想25
PAT乙級 | 1006 換個格式輸出整數15
PAT乙級 | 1007 素數對猜想20
PAT乙級 | 1008 陣列元素迴圈右移問題20
PAT乙級 | 1009 說反話20
PAT乙級 | 1010 一元多項式求導25
PAT乙級 | 1011 A+B 和 C15
PAT乙級 | 1012 數位分類20
PAT乙級 | 1013 數素數20
PAT乙級 | 1014 福爾摩斯的約會20
PAT乙級 | 1015 德才論25
PAT乙級 | 1016 部分A+B15
PAT乙級 | 1017 A除以B20
PAT乙級 | 1018 錘子剪刀布20
PAT乙級 | 1019 數位黑洞20
PAT乙級 | 1020 月餅25
PAT乙級 | 1021 個位數統計15
PAT乙級 | 1022 D進位制的A+B20
PAT乙級 | 1023 組個最小數20
PAT乙級 | 1024 科學計數法20
PAT乙級 | 1025 反轉連結串列25
PAT乙級 | 1026 程式執行時間15
PAT乙級 | 1027 列印沙漏20
PAT乙級 | 1028 人口普查20
PAT乙級 | 1029 舊鍵盤20
PAT乙級 | 1030 完美數列25
PAT乙級 | 1031 查驗身份證15
PAT乙級 | 1032 挖掘機技術哪家強20
PAT乙級 | 1033 舊鍵盤打字20
PAT乙級 | 1034 有理數四則運算20
PAT乙級 | 1035 插入與歸併25
PAT乙級 | 1036 跟奧巴馬一起程式設計15
PAT乙級 | 1037 在霍格沃茨找零錢20
PAT乙級 | 1038 統計同成績學生20
PAT乙級 | 1039 到底買不買20
PAT乙級 | 1040 有幾個PAT25
PAT乙級 | 1041 考試座位號15
PAT乙級 | 1042 字元統計20
PAT乙級 | 1043 輸出PATest20
PAT乙級 | 1044 火星數位20
PAT乙級 | 1045 快速排序25
PAT乙級 | 1046 划拳15
PAT乙級 | 1047 程式設計團體賽20
PAT乙級 | 1048 數位加密20
PAT乙級 | 1049 數列的片段和20
PAT乙級 | 1050 螺旋矩陣25
PAT乙級 | 1051 複數乘法15
PAT乙級 | 1052 賣個萌20
PAT乙級 | 1053 住房空置率20
PAT乙級 | 1054 求平均值20
PAT乙級 | 1055 集體照25
PAT乙級 | 1056 組合數的和15
PAT乙級 | 1057 數零壹20
PAT乙級 | 1058 選擇題20
PAT乙級 | 1059 C語言競賽20
PAT 乙級 | 1060 愛丁頓數25
PAT乙級 | 1061 判斷題15
PAT乙級 | 1062 最簡分數20
PAT乙級 | 1063 計算譜半徑20
PAT乙級 | 1064 朋友數20
PAT乙級 | 1065 單身狗25
PAT乙級 | 1066 影象過濾15
PAT乙級 | 1067 試密碼20
PAT乙級 | 1068 萬綠叢中一點紅20
PAT乙級 | 1069 微博轉發抽獎20
PAT乙級 | 1070 結繩25
PAT乙級 | 1071 小賭怡情15
PAT乙級 | 1072 開學寄語20
PAT乙級 | 1073 多選題常見計分法20
PAT乙級 | 1074 宇宙無敵加法器20
PAT乙級 | 1075 連結串列元素分類25
PAT乙級 | 1076 Wifi密碼15
PAT乙級 | 1077 互評成績計算20
PAT乙級 | 1078 字串壓縮與解壓20
PAT乙級 | 1079 延遲的迴文數20
PAT乙級 | 1080 MOOC期終成績25
PAT乙級 | 1081 檢查密碼15
PAT乙級 | 1082 射擊比賽20
PAT乙級 | 1083 是否存在相等的差20
PAT乙級 | 1084 外觀數列20
PAT乙級 | 1085 PAT單位排行25
PAT乙級 | 1086 就不告訴你15
PAT乙級 | 1087 有多少不同的值20
PAT乙級 | 1088 三人行20
PAT乙級 | 1089 狼人殺-簡單版20
PAT乙級 | 1090 危險品裝箱25
PAT乙級 | 1091 N-自守數15
PAT乙級 | 1092 最好吃的月餅20
PAT乙級 | 1093 字串A+B20
PAT乙級 | 1094 谷歌的招聘20
PAT乙級 | 1095 解碼PAT准考證25

一些技巧

1、在使用c++時如果超時了則用scanf和printf輸入輸出,如果還是超時就是演演算法的問題,這個時候應該審視一下自己的演演算法。
2、需要掌握C++的STL庫,比如:vector、map、string、queue、stack、algorithm。其中algorithm裡有sort函數,排序時就比較方便了。
3、掌握sprintf和sscanf函數,博主之前寫了篇簡介:關於sscanf以及sprintf函數
4、掌握輾轉相除法求最大公約數,兩種寫法:

int gcd(int a,int b){
	if(b==0) return a;
	return gcd(b,a%b);
}

int gcd(int a,int b){
	return !b ? a : gcd(b,a%b);
}

5、掌握hash思想,即雜湊思想,這是一個比較好用的思想。
6、如果是浮點型則用double。
7、掌握結構體知識。
8、掌握判斷素數的方法

bool isPrime(int n){
    if(n==1||n==0) return false;
    for(int i=2;i<=sqrt(1.0*n);i++)
        if(n%i==0) return false;
    return true;
}

9、瞭解貪婪演演算法
10、瞭解大整數運算:大整數操作——四則運算、進位制轉換、比較大小
…………
另外,關於字串處理的題,只能多做這類題,才能提高AC概率,見多才能識廣嘛,STL庫也要多用才會熟悉。總之其實乙級是不難的,難是因為做的題太少了,所以沉下心來,好好提升自己。當題目很複雜時,要學會分治,儘可能把問題分成幾個子問題,將其逐個求解。