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