1036霍比?
輸入時忽略某字符:
cin.ignore()
或者直接用scanf
1021 個位數統(tǒng)計
用一個計數器數組來統(tǒng)計每個數字出現的頻率
1023 組個最小數
算法:用一個數組a存儲出現的數字數残腌,輸入時同時獲得非0的min
輸出時先輸出一個min,然后從頭遍歷存儲數組——當a[i]>0時輸出一個i并讓a[i]–
1043 輸出PATest
while scanf!=EOF——檢測輸入无蜂,當沒有輸入時跳出循環(huán)
算法:如果當前輸入的字母是PATest其中之一的話則直接讓字母對應的計數器變量+1
輸出時依次輸出PATest,每輸出一個就讓對應計數器減一
1009 說反話
while cin>>str自動按空格切分并輸入到str
用一個stack儲存放進來的str,對應頭文件stack
1011 A+B和C
大整數直接用long long int
1004 成績排名
使用一個class數組student瓢宦,用first和Last記錄當前的最大和最小編號,然后直接輸出即可
1038 統(tǒng)計同成績學生
用一個vector儲存輸入的成績灰羽,然后用一個計數器數組儲存對應每個數字出現的頻率
1031 查驗身份證
對輸入的身份證號進行檢查:
如果前十七位發(fā)現字母直接break驮履,反之則按照權重計算出當前的數temp鱼辙,加到checkCount中,算完之后對11取mod
用數組checkNum記錄計數器i對應的輸入ID是否合法玫镐,合法為1不合法為2
如果循環(huán)沒跑完則直接記為0
跑完了則檢驗最后一位是否符合
1008 數組元素循環(huán)右移
寫一個函數讓數組整體右移一次倒戏,具體做法是從后往前處理以免造成覆蓋
需要偏移shift位就讓這個函數執(zhí)行shift次
1017 A除以B
對于巨大的整數,作為string輸入
從第一位開始恐似,每次都執(zhí)行temp=temp*10+下一位操作杜跷,然后每執(zhí)行完一次直接取余數
1022 D進制
用stack做進制轉換——連續(xù)取余,然后將mod推入stack
1027 輸出沙漏
總星號數計算公式total=2*count^2-1
對于前count行蹂喻,第i行輸入i個空格和2count-1-2i個星號葱椭,注意結尾不要輸入空格
反向輸入同理
1032 挖掘機
用計數器數組計算各校得分,然后搜索得分最高的學校及其總分
1042 字符統(tǒng)計
寫個函數判斷是否為字母
使用map<char,int> frequency口四,如果s[i]是字母則frequency[s[i]]++
map<char,int>::iterator it
it->first為字母孵运,it->second為出現個數
1029 舊鍵盤
首先全部轉換為大寫
用一個set來統(tǒng)計數字(去重)——set.insert返回的是一組pair,使用second返回插入成功與否的提示蔓彩,如果插入成功則推入候補向量中
1007 素數對猜想
先生成素數列表治笨,然后再檢驗素數對
1013 數素數
生成素數列表,然后輸出即可——注意輸出格式
1028 人口普查
定義一個類elder赤嚼,建立一個函數成員too young旷赖,判斷當前最年輕和最年長的
注意年齡計算公式是否合法
1005 3n+1繼續(xù)
使用計數數組,把每一步產生的中間值tmp記錄到計數數組中
f[tmp]=1
如果計數數組里沒有更卒,!f[input[i]]等孵,就是關鍵數,推入輸出向量中
1019 數字黑洞
先把輸入的數字每一位都保存到數組中蹂空,然后排序
按從小到大和從大到小分別還原得到big和small
輸出方式printf(%04d-%04d=%04d\n)
1010
使用bool型標記變量flag
1030 完美數列
輸入后排序俯萌,然后兩層嵌套循環(huán)
maxlen=0,for i=0(for j=i+maxlen) if maxlen<j-i maxlen=j-i
1020 月餅
sort的比較函數cmp——return a<b為升序排列
輸出保留兩位小數printf %.2f
注意為了保證精度,全程使用double
1003 我要通過
對于xPATx形式上枕,P的個數與A的個數乘積應該等于T的個數
1014 福爾摩斯
盡量用For循環(huán)咐熙,然后求星期的時候兩個序列一起往前走(只考慮字符一一對應的情況)
1025 反轉鏈表
用數組addr保存每個鏈表在向量中的位置,對應temp.address
int count=0
vinput.pushback temp
addr[temp.address]=count++
memset來自于memory.h
遍歷時從初始地址進入辨萍,在input中找到對應鏈表后推入vector中
p=init
int pos=addr[p]
linknode.pushback vinput[pos]
p=vinput[pos].next
系統(tǒng)自帶reverse函數棋恼,來自頭文件algorithm
1045 快速排序
主元的條件:恰好位于正確的順序上,且為當前最大元??
1015 德才論
重寫sort cmp函數
1044 火星數字
getline(cin,input[i](字符串)锈玉,‘\n’)注意第一個可能是廢的
獲取子字符串的方法:string.substr(begin爪飘,end)
另外注意高位為整數(恰好為26)低位為0時不要輸出
1040 有幾個PAT
從后往前數,PAT的數量等于P的數量乘A再乘T
if i=T numT++
if i=A numAT+=numT
if i=P numPAT+=numAT
1033 舊鍵盤打字
getline讀取一行
定義一個判斷函數notbad拉背,對一個字符搜索bad字符串:
如果有大寫悦施,且+在bad里則返回false
全部轉化為小寫再一一判斷
判斷通過之后直接用putchar輸出即可