PAT 乙級練習題 1005

2021-08-09 15:00:34 字數 1424 閱讀 4754

當我們驗證卡拉茲猜想的時候,為了避免重複計算,可以記錄下遞推過程中遇到的每乙個數。例如對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

思路:

首先,列出輸入所有數字在的過程中出現的數字,將其儲存在陣列get_num中。

然後,依次迴圈比較給定輸入與每個數字的get_num中的數字,如果在乙個get_num陣列中出現了相同的值,則表示該數字可以被覆蓋,將其值改寫為0

最後,將比較過的初始陣列排序,除了關鍵字外,其餘非關鍵字的值已經改寫為0,然後按照要求輸出。

示例**:

#include 

#include

using

namespace

std;

int n;

int num[100],step[100],copynum[100];

int get_num[100][100];

int same[100];

int result[20];

void get_num(int a)

}//記錄「砍」地過程中出現地數

void compare(int a)

}}//比較輸入與第a個數字的驗證數

int main()

get_num(copynum);

for(int i=0;iint>());//降序排列

cout

<0];

for(int i=1;num[i]!=0;i++)

浙大PAT練習題1005

nowcoder號稱自己已經記住了1 100000之間所有的斐波那契數。為了考驗他,我們隨便出乙個數n,讓他說出第n個斐波那契數。當然,斐波那契數會很大。因此,如果第n個斐波那契數不到6位,則說出該數 否則只說出最後6位。對應每一組輸入,輸出第n個斐波那契數的最後6位。輸入例子 123 410000...

PAT 乙級練習題 1007

讓我們定義 dn 為 dn pn 1 pn,其中 pi 是第i個素數。顯然有 d1 1 且對於n 1有 dn 是偶數。素數對猜想 認為 存在無窮多對相鄰且差為2的素數 現給定任意正整數n 105 請計算不超過n的滿足猜想的素數對的個數。輸入格式 每個測試輸入包含1個測試用例,給出正整數n。輸出格式 ...

PAT乙級練習題 1010

設計函式求一元多項式的導數。注 x n n為整數 的一階導數為n x n 1 輸入格式 以指數遞降方式輸入多項式非零項係數和指數 絕對值均為不超過1000的整數 數字間以空格分隔。輸出格式 以與輸入相同的格式輸出導數多項式非零項的係數和指數。數字間以空格分隔,但結尾不能有多餘空格。注意 零多項式 的...