pat 乙級 1005 3n 1猜想

2021-10-24 23:26:32 字數 1176 閱讀 6214

題目鏈結

輸入:

6

3 5 6 7 8 11

輸出:

7 6
思路:

1、用陣列arr下標來標記輸入的數字,如果這個數字是重複驗證過的 ,那麼就將其陣列的值修改為1作為記號

2、使用向量vector來表示輸入的每個值,利用向量可以定位到資料的位址i0

1234

5678

9101112

1314

1516

arr[i]00

0000

0000

0000

000v(1)

v(2)

v(3)

v(4)

v(5)

v(6)

v(1)11

0111

v(2)

pass

v(3)

1pass

0v(4)

01......

v(5)

pass

v(6)

pass

3、簡單來說最後輸出的結果就是arr中,這幾個陣列的位址可以用向量來定址,然後沒有修改為1的就是在這組資料中沒有被覆蓋的數

4、使用sort(v.begin(),v.end(),cmp)函式實現從大到小排序 cmp(int a,int b);

4、最後使用乙個標記flag來幫助讓輸出第乙個數後,每個後面的數,輸出的時候都要先輸出乙個空格。

**:

#include #include #include using namespace std;

int cmp(int a,int b)

int main();//初始化陣列

int i=0;

int n;

int flag=0;

cin>>k;

vectorv(k);//定義向量,長度是k

for(i=0;i>n;

v[i] = n;

while(n!=1)

} sort(v.begin(),v.end(),cmp);

for(i=0;i

PAT乙級1005 3n 1續 C語言

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

PAT乙級 繼續 3n 1 猜想

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

PAT乙級 繼續(3n 1 猜想

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