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