PAT乙类1005之继续(3n+1)猜想 (25 分)
生活随笔
收集整理的這篇文章主要介紹了
PAT乙类1005之继续(3n+1)猜想 (25 分)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
一、 題目
卡拉茲(Callatz)猜想已經(jīng)在1001中給出了描述。在這個(gè)題目里,情況稍微有些復(fù)雜。 當(dāng)我們驗(yàn)證卡拉茲猜想的時(shí)候,為了避免重復(fù)計(jì)算,可以記錄下遞推過(guò)程中遇到的每一個(gè)數(shù)。例如對(duì) n=3 進(jìn)行驗(yàn)證的時(shí)候,我們需要計(jì)算 3、5、8、4、2、1,則當(dāng)我們對(duì) n=5、8、4、2 進(jìn)行驗(yàn)證的時(shí)候,就可以直接判定卡拉茲猜想的真?zhèn)?#xff0c;而不需要重復(fù)計(jì)算,因?yàn)檫@ 4 個(gè)數(shù)已經(jīng)在驗(yàn)證3的時(shí)候遇到過(guò)了,我們稱 5、8、4、2 是被 3“覆蓋”的數(shù)。我們稱一個(gè)數(shù)列中的某個(gè)數(shù) n 為“關(guān)鍵數(shù)”,如果 n 不能被數(shù)列中的其他數(shù)字所覆蓋。 現(xiàn)在給定一系列待驗(yàn)證的數(shù)字,我們只需要驗(yàn)證其中的幾個(gè)關(guān)鍵數(shù),就可以不必再重復(fù)驗(yàn)證余下的數(shù)字。你的任務(wù)就是找出這些關(guān)鍵數(shù)字,并按從大到小的順序輸出它們。輸入格式: 每個(gè)測(cè)試輸入包含 1 個(gè)測(cè)試用例,第 1 行給出一個(gè)正整數(shù) K (<100),第 2 行給出 K 個(gè)互不相同的待驗(yàn)證的正整數(shù) n (1<n≤100)的值,數(shù)字間用空格隔開(kāi)。輸出格式: 每個(gè)測(cè)試用例的輸出占一行,按從大到小的順序輸出關(guān)鍵數(shù)字。數(shù)字間用 1 個(gè)空格隔開(kāi),但一行中最后一個(gè)數(shù)字后沒(méi)有空格。輸入樣例: 6 3 5 6 7 8 11 輸出樣例: 7 6二、代碼
- 新的函數(shù)
Sort(start,end,cmp)
參數(shù)
(1)start表示要排序數(shù)組的起始地址;
(2)end表示數(shù)組結(jié)束地址的下一位;
(3)cmp用于規(guī)定排序的方法,可不填,默認(rèn)升序。
如果記不住默認(rèn)升序,可以重新定義cmp函數(shù)!!!
bool cmp(int a, int b) {
return a > b;
}
- 核心思想
Attention!!! 被覆蓋的不包含n本身,這個(gè)時(shí)候a[n]還等于1,它還沒(méi)有被覆蓋!!!
- 易錯(cuò)點(diǎn)
1)while(n != 1) 的位置; 還是那個(gè)問(wèn)題,n不是被覆蓋的數(shù),被它求出來(lái)的數(shù)才是被覆蓋的!! 所以while(n != 1) 要寫(xiě)在判斷是不是覆蓋數(shù)的外面
2)審題問(wèn)題; 注意n不是等于 3 * n + 1, 而是一半
總結(jié)
以上是生活随笔為你收集整理的PAT乙类1005之继续(3n+1)猜想 (25 分)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【转】RNN、LSTM、Transfor
- 下一篇: pandas object转float_