C語言 求高次方數的尾數

2021-09-23 17:14:53 字數 725 閱讀 2453

許多初學者看到本題最容易想到的方法就是:將13累乘13次後擷取最後三位即可。但是計算機中儲存的整數有一定的範圍,超出某範圍將不能正確表示,所以用這種演算法不可能得到正確的結果。實際上,題目僅要求後三位的值,完全沒有必要把13的13次方完全求出來。

手工計算13的13次方的步驟如下:

研究乘法的規律會發現:乘積的最後三位的值只與乘數和被乘數的後三位有關,與乘數和被乘數的高位無關。利用這一規律,在計算下一次的乘積時,我們只需用上次乘積的後三位來參與運算(即在求第三次乘積時,上次的乘積2197並不需要都參與運算,只取其後三位197再次與13相乘即可)。求某數的後三位的演算法用某數對1000取模。

程式設計過程中,將累乘得到的積儲存到變數last中,在進行下一次相乘之前先擷取last的後三位再相乘,即:last%1000*13,將結果儲存到last中:last=last*x(x的值為13)%1000。 因第一次相乘時用到變數last的初值,故在定義時給last賦初值,或在參與計算之前給last賦初值1。

下面是完整的**:

#include

int main()

執行結果:

請輸入 x 和 y:

13 13

高次方數的後三位為:253

高次方數的尾數問題

問題描述 求13的13次方的最後三位數。問題分析 許多初學者看到本題最容易想到的方法是 將13累乘13次後,擷取最後三位。但是,計算機中儲存的整數有一定的範圍,超出範圍後將不能正確表示,所以用這種方法不可能得到正確的結果。實際上,題目僅要求求出13的13次方的後三位,沒必要全求出來。演算法設計 有研...

C 複習(四) 高次方尾數 階乘尾數

題目四 高次方程的後三位,即輸入x,y,求x的y次方的後三位 題目五 求階乘尾數有多少個零,例如輸入a,a!末尾的零的個數 題目四 求高次方程的後三位,即輸入x,y,求x的y次方的後三位 分析 int型資料範圍是正負21億左右,所以直接求高次方程會突破 取值範圍,因此只需要每次取後三位即可 題目五 ...

演算法精練 高次方數的尾數 階乘尾數零的個數

高次方數的尾數 要求 求133的133次方的最後三位數。利用c c 程式進行設計。演算法設計 由於計算機所能表示的整數範圍有限,直接乘的方法顯然是不可能得到正確的結果。但事實上,題目只要求保留後三位,完全沒有必要求出完整結果。因此 通過研究乘法的規律可以發現,乘積的後三位的值只與乘數與被乘數的後三位...