乙個整數n的階乘可以寫成n!,它表示從1到n這n個整數的乘積。階乘的增長速度非常快,例如,13!就已經比較大了,已經無法存放在乙個整型變數中;而35!就更大了,它已經無法存放在乙個浮點型變數中。因此,當n比較大時,去計算n!是非常困難的。幸運的是,在本題中,我們的任務不是去計算n!,而是去計算n!最右邊的那個非0的數字是多少。例如,5!=12345=120,因此5!最右邊的那個非0的數字是2。再如,7!=5040,因此7!最右邊的那個非0的數字是4。再如,15!= 1307674368000,因此15!最右邊的那個非0的數字是8。請編寫乙個程式,輸入乙個整數n(0個人分析:
while
(res%
10==0)
因為題目要求的是得到最右邊非零的數,除以10取整就是去掉右邊的0。例如660滿足對10取餘等於0, 就執行660/10=66實現了去掉右邊的0。然後每次對1000取餘是因為階乘的增長速度很快,所以通過這個操作將其控制在三位數。例如666888取餘就是888。因為只需要最右邊的非零值,所以這個操作不會影響結果
然後我測試了一下對100取餘只能得90分 對1000和10000取余是滿分100
res%
=1000
;
實現了將每次階乘後的結果保留在3位
具體**如下:
ac
#include
using namespace std;
intmain()
res%
=1000;}
cout<10
}
學如逆水行舟,不進則退
藍橋杯 演算法訓練 P0505
時間限制 1.0s 記憶體限制 256.0mb 乙個整數n的階乘可以寫成n 它表示從1到n這n個整數的乘積。階乘的增長速度非常快,例如,13!就已經比較大了,已經無法存放在乙個整型變數中 而35!就更大了,它已經無法存放在乙個浮點型變數中。因此,當n比較大時,去計算n 是非常困難的。幸運的是,在本題...
藍橋杯 演算法訓練 P0505
乙個整數n nn的階乘可以寫成n n n 它表示從1到n nn這n nn個整數的乘積。階乘的增長速度非常快,例如,13!就已經比較大了,已經無法存放在乙個整型變數中 而35!就更大了,它已經無法存放在乙個浮點型變數中。因此,當n nn比較大時,去計算n n n 是非常困難的。幸運的是,在本題中,我們...
藍橋杯 演算法訓練 P0505
乙個整數n的階乘可以寫成n 它表示從1到n這n個整數的乘積。階乘的增長速度非常快,例如,13!就已經比較大了,已經無法存放在乙個整型變數中 而35!就更大了,它已經無法存放在乙個浮點型變數中。因此,當n比較大時,去計算n 是非常困難的。幸運的是,在本題中,我們的任務不是去計算n 而是去計算n 最右邊...