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

2021-08-29 18:25:41 字數 968 閱讀 3432

高次方數的尾數

**要求:**求133的133次方的最後三位數。利用c/c++程式進行設計。

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

源**及注釋

#include

#include

intmain()

printf

("the last 3 digits of %d * %d: %d\n"

,x,y,last_num)

;system

("pause");

return0;

}

階乘尾數零的個數

要求:100!的末尾有多少個零?

演算法設計:先求出100!的值,然後數一下末尾的零的個數。但問題與上題一樣,計算機所能表示的整數範圍有限,這是不可能的。因此:就必須從數學上分析在100!的末尾產生零的條件。即:乙個整數若含有乙個因子5,則必然會在求100!時產生乙個零。因此問題轉換為求1到100之間包含了因數5的個數。若整數n能被25整除,則n包含2個因子5,;若整數n能被5整除,則包含1個因子5。

源**及注釋:

#include

#include

intmain()

printf

("the number of 0 in the end of 100 is: %d\n"

,count)

;system

("pause");

return0;

}

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

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

高次方數的尾數問題

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

C語言 求高次方數的尾數

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