#41224: C++詳解


toseanlin@gmail.com (Dr. SeanXD)

學校 : 康橋雙語學校
編號 : 158065
來源 : [24.147.249.5]
最後登入時間 :
2024-09-07 10:27:31
j242. 111北二1a.自然數的平方根 -- 111北二區桃竹苗資訊學科能力複賽 | From: [118.171.177.227] | 發表日期 : 2024-07-12 11:24

先判斷 N 是否為完全平方數,如果 pow(sqrt(N), 2) == N,代表 N 為完全平方數,直接輸出 sqrt(N) 即可。

如果 N 不是完全平方數,預設兩個變數 a = 1、b = N,兩個變數都需要 Long Long Int。跑一個 While迴圈,並且跑一個 For迴圈並跑每一個完全平方數,可以宣告一個變數 plus 為 3,並且將 For迴圈 寫成:「for (int i = 4; i<=N; i+=plus)」,並且在每一次迴圈結束之後將 plus += 2。

For迴圈 每次都只會跑到完全平方數,只要判斷 i 是否為 b 的因數,如果 i 為 N 的因數,則將 b /= i、a *= sqrt(i),如果本次 While迴圈 沒有判斷到因數,則將 While迴圈 Break 掉。

如果 a != 1,就輸出 a 跟一個空格字元。在判斷式後面輸出 sqrt(b)。

 

範例程式碼

 
ZeroJudge Forum