PAT 乙 1005 繼續 3n 1 猜想

2021-08-16 17:10:15 字數 1011 閱讀 4222

卡拉茲(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輸出格式:每個測試用例的輸出佔一行,按從大到小的順序輸出關鍵數字。數字間用1個空格隔開,但一行中最後乙個數字後沒有空格。

輸入樣例:

6

3 5 6 7 8 11

輸出樣例:
7 6

對於這道題,當每次求出乙個數後,我便遍歷一遍陣列,將這個數標記為已覆蓋,再將已覆蓋數的數量加一,這樣就知道關鍵數的數量,在最後輸出空格時避免最後乙個數字後沒有空格。

**如下:

#include #include using namespace std;

bool cmp1(int a,int b)

int main()

; int num[100];

cin>>k;

for (i=0;i>num[i];

} sort(num,num+k,cmp1);

for (i=0;ielse

for (int j=0;j}

} }for (i=0;i}

} return 0;

}

PAT乙1005 繼續 3n 1 猜想

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

pat乙 1005 繼續 3n 1 猜想

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

PAT乙1005 繼續 3n 1 猜想

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