1005 繼續 3n 1 猜想

2021-10-05 23:54:37 字數 1217 閱讀 5002

pta程式設計平台 1005 繼續(3n+1)猜想(c++)

做題耗時: 4 h

此題主要學習到了:

陣列的用法,可以用陣列為資料做作標記,而不是只知道存放資料,可將其初始為很大。例如:3 4 58 24 19 將data[3],data[4],data[58],data[24],data[19]的值設為0或1,以作為其標記,初始將陣列大小可以放的很大

更方便快捷的排序方法:系統標頭檔案< algorithm >內的函式sort(start,end,cmp),效率相比氣泡排序等更高,且使用方便,具體用法如下,詳情以及更多其它用法函式sort類函式總結及用法例子:

語法:sort(start,end,cmp)

(1)start表示要排序陣列的起始位址;

(2)end表示陣列結束位址的下一位;

(3)cmp用於規定排序的方法,可不填,預設公升序,從小到大。

cmp改為降序模板 從大到小:

bool cmp(int a , int b)

時間複雜度:

時間複雜度為nlog2(n),執行效率較高。

例子:陣列a[n] sort(a,a+i,cmp)

3. 使用vector時當資料較龐大時效率可能受影響

參考博主:robert wang

**如下:

#include

#include

#include

using

namespace std;

vector<

int>

tab(

100001,0

);bool

cmp(

int a,

int b)

intmain()

}}int ans[

100]

;int count=0;

for(

int i =

0; i < n; i++)}

sort

(ans, ans + count, cmp)

;int m =1;

for(

int i =

0; i < count; i++

)else

}return0;

}```c++

1005繼續3n 1猜想

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

1005 繼續 3n 1 猜想

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

1005 繼續 3n 1 猜想

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