1001的解題過程

2021-08-18 23:05:59 字數 832 閱讀 7627

卡拉茲(callatz)猜想:

對任何乙個自然數n,如果它是偶數,那麼把它砍掉一半;如果它是奇數,那麼把(3n+1)砍掉一半。這樣一直反覆砍下去,最後一定在某一步得到n=1。卡拉茲在2023年的世界數學家大會上公布了這個猜想,傳說當時耶魯大學師生齊動員,拼命想證明這個貌似很傻很天真的命題,結果鬧得學生們無心學業,一心只證(3n+1),以至於有人說這是乙個陰謀,卡拉茲是在蓄意延緩美國數學界教學與科研的進展……

我們今天的題目不是證明卡拉茲猜想,而是對給定的任一不超過1000的正整數n,簡單地數一下,需要多少步(砍幾下)才能得到n=1?

輸入格式:每個測試輸入包含1個測試用例,即給出自然數n的值。

輸出格式:輸出從n計算到1需要的步數。

輸入樣例:

3
輸出樣例:

5經過幾個小時的思考得出以下錯誤**:

#include "stdio.h"

int main()

else

if (a % 2 == 1)

} while (a == 1);

printf("%d", n);

return 0;

至今仍未發現錯誤。。。

經過十分鐘的思考,是do while語句用錯,while語句的括號裡的條件是當它不成立的時候才退出do while語句。

但是仍然不知道怎麼把輸入的值設定在1000以內且為正整數。

while (a!= 1)

a = a % 2 ? (3 * a + 1) / 2 : a / 2;

n++;

}感覺這個式子以後會經常用到。。。提交了14次,最後終於得了滿分

POJ 1001 解題報告

這道題主要是考察數的高精度乘法,使用陣列儲存資料,陣列中的元素對於高精度資料中的某一位。我用的思想很簡單,類似我們手算乘法時採用的步驟,這是在兩層的for 迴圈中實現的。需要注意乙個問題,如果採用unsigned char型儲存元素,在運算的過程中rslt元素的中間結果可能超過255,造成乘法結果的...

POJ 1001 解題報告

這是一道基礎的高精度的題目。對於高精度的題目,頭腦一定要清晰,一定要細心。這種題,錯的話還是比較難改的 除非用debug,好吧,我用了 基本思路就是把所有的數字反過來存放在字串陣列中,然後一位一位的模擬手算。要注意的是 1 字元 n 和數字n之間的轉換要搞清 2 每次更新是盡量把陣列清零,否則可能使...

從拾ACM poj1001解題報告

事情一件件來,水題一道道刷。1001是一道典型的高精度問題,重點是處理字串。最後需要按照題目的輸出標準來輸出答案就可以了 include includeint output 120 第一位為1,方便計算 int m num是去掉小數點後的十進位制數字,比如95.23變為9523 因為我們要乘的數是固...