PAT乙級考試 1005 繼續3n 1猜想

2021-10-08 06:59:48 字數 1148 閱讀 3814

題目

思路錄入資料

由於題目中限定數字最大為100,建立乙個容量為101的num陣列來儲存數字,初始值均為0,每錄入乙個數字i,將num[i]=1;

我們規定num[i]==0表示i未出現,num[i]==1表示i出現,num[i]==2表示i被覆蓋

判斷覆蓋數字

我們稱乙個數字i在遞推到1的過程**現的數字為i的路徑,如3的路徑為5、8、4、2、1;

依次檢測每個數字,若數字i出現且未被覆蓋,即num[i]==1,則將其路徑上所有小於等於100的數字都標記為覆蓋。這裡雖然輸入的數字小於等於100,但其路徑上的數字不一定如此,所以需要限定範圍,否則會出現段錯誤的情況;

對於所有沒有出現的數字和被覆蓋的數字(無論這個數字是否是出現過的),都不可能是關鍵數字,不考慮

列印資料

最後乙個資料不列印空格即可,列印語句printf("%d%c", i, --k ? 』 』 : 『\0』);學習於知乎,是一種很精練的方式

#include

#define size 101

intmain

(void);

scanf

("%d"

,&k)

;for

(i =

0; i < k; i++

)for

(i =

0; i < size; i++)if

(num[i]==1

)}for(i =

0, k =

0; i < size; i++)if

(num[i]==1

) k++

;for

(i = size -

1; i >=

0; i--)if

(num[i]==1

)printf

("%d%c"

, i,

--k ?

' ':

'\0');

return0;

}

PAT(乙級)1005 繼續 3n 1 猜想

題目 卡拉茲 callatz 猜想已經在1001中給出了描述。在這個題目裡,情況稍微有些複雜。當我們驗證卡拉茲猜想的時候,為了避免重複計算,可以記錄下遞推過程中遇到的每乙個數。例如對n 3進行驗證的時候,我們需要計算3 5 8 4 2 1,則當我們對n 5 8 4 2進行驗證的時候,就可以直接判定卡...

PAT 乙級 1005 繼續 3n 1 猜想

時間限制 400 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 chen,yue 卡拉茲 callatz 猜想已經在1001中給出了描述。在這個題目裡,情況稍微有些複雜。當我們驗證卡拉茲猜想的時候,為了避免重複計算,可以記錄下遞推過程中遇到的每乙個數。...

PAT乙級1005 繼續 3n 1 猜想

卡拉茲 callatz 猜想已經在1001中給出了描述。在這個題目裡,情況稍微有些複雜。當我們驗證卡拉茲猜想的時候,為了避免重複計算,可以記錄下遞推過程中遇到的每乙個數。例如對n 3進行驗證的時候,我們需要計算3 5 8 4 2 1,則當我們對n 5 8 4 2進行驗證的時候,就可以直接判定卡拉茲猜...