也許你早就知道階乘的含義,n階乘是由1到n相乘而產生,如:12!12!
==
1' role="presentation" style="position: relative;">11x
2 2
x 3' role="presentation" style="position: relative;">33x
4 4
x 5' role="presentation" style="position: relative;">55x
6 6
x 7' role="presentation" style="position: relative;">77x
8 8
x 9' role="presentation" style="position: relative;">99x
10 10
x 11 11
x 12 12
==
479,001
,600
' role="presentation" style="position: relative;">479
,001
,600
479,
001,
600
12 12
的階乘最右邊的非零位為
6 6
。寫乙個程式,計算n(
1<=
n<=50,
000,
000)
' role="presentation" style="position: relative;">n(1
<=
n<=50,
000,
000)n(
1<=
n<=50,
000,
000)
階乘的最右邊的非零位的值。
注意:10
,000
,00010,
000,
000!有
2499999
2499999
個零。輸入格式:
僅一行包含乙個正整數
n n
。輸出格式:
單獨一行包含乙個整數表示最右邊的非零位的值。
輸入樣例#1:
12' role="presentation" style="position: relative;">1212
輸出樣例#1:
6 6
usacotr
aini
ngse
ctio
n3.2
' role="presentation" style="position: relative;">usa
cotr
aini
ngse
ctio
n3.2us
acot
rain
ings
ecti
on3.2
小菜雞好久沒有和大家見面了,今天感到格外開心。
來,幫小菜雞再挑戰新高度。
上個星期,和一幫師兄(都是大神)聽課。
其中有一道題比較感興趣。
那就是本題了。
難度為 普及/提高- 。
小菜雞一開始沒開題覺得很難,畢竟是和一群da
lao dal
ao
上課。但一看題其實並沒有想象的那麼難,開來審題還是非常重要的。
這道題小菜雞覺得和下面這道小學生賽題目,有點相似。
1.連續零(難度係數:容易)
(1.pas/cpp/c)
【題目描述】
輸入兩個正整數a和b,s為a到b之間(包含a、b)所有整數的乘積,求s末尾從個位開始有多少個連續的0。
比如a=1,b=7,那麼s=1*2*3*4*5*6*7=5040,答案就是1,不是2。
【輸入格式】
一行兩個正整數,分別表示a和b(1
<=a,b<=10^6)。
【輸出格式】
輸出一行乙個整數,即0的個數。
【輸入輸出樣例1】
lxl.in lxl.out110
2【輸入輸出樣例2】
lxl.in lxl.out425
6【資料範圍】
1<=a,b<=1000
000
那我們先從這道題入手。
首先審題,非常重要。
主要講的是:
a a
到b' role="presentation" style="position: relative;">b
b的乘積,末尾有幾個
0 0
那末尾0' role="presentation" style="position: relative;">0
0怎麼產生的呢?
2 2
× 5' role="presentation" style="position: relative;">55=
=
10' role="presentation" style="position: relative;">1010
也就是說,找
2 2
和5' role="presentation" style="position: relative;">5
5的個數,然後比較誰少,就是答案。
忘了告訴大家這道題有個坑,
a a
不一定比
b' role="presentation" style="position: relative;">b
b小,交換一下就可以了。
#include//呼叫 scanf 庫
long
long a,b,t,x,y,s1=0,s2=0;//競賽最好開 long long ,避免資料太大的情況
int main()//主函式
//算出2和5的個數
if(s1printf("%lld",s1);
else
printf("%lld",s2);
//輸出小的
return
0;}
回歸正題,題目類似
不過洛谷上是n!
n
!,就沒有剛剛的坑點了。
其實,剛剛有個優化,直接判斷
10 10
。因為,2
2
和5' role="presentation" style="position: relative;">5
5才得到
10 10
,那個少乙個都不行,所以自然得出少的個數。
#include//呼叫 scanf 庫
#define ll long long//long long 可開可不開,不過小菜雞喜歡
ll n,ans=1;//ans 做累乘
int main()//美好的開始
printf("%lld",ans%10);//注意最後要%10,想了大約半個小時
return
0;//下次再見
}
P1134 階乘問題
也許你早就知道階乘的含義,n階乘是由1到n相乘而產生,如 12 1 times 2 times 3 times 4 times 5 times 6 times 7 times 8 times 9 times 10 times 11 times 12 479,001,60012 1 2 3 4 5 6...
P1134 階乘問題
題意 求出 n 去掉後導 0 之後的最後一位 首先後導 0 最簡單是由 2 5 得來的 於是想到乙個騷操作,先把每個數的 2,5 提出來,一對一對地消掉,就把後導 0 去掉了 因為在 1 n 中因子 2 一定比 5 多,所以最後讓 2 的個數減去 5 的個數 然後對於剩下的 2 不想寫快速冪 發現只...
P1134 階乘問題
也許你早就知道階乘的含義,n階乘是由1到n相乘而產生,如 12 1 times 2 times 3 times 4 times 5 times 6 times 7 times 8 times 9 times 10 times 11 times 12 479,001,60012 1 2 3 4 5 6...