發新話題
打印

50!乘開之後最後不為0的兩個數字為何?

50!乘開之後最後不為0的兩個數字為何?

我已經知道(10a+1)(10a+2)(10a+3)(10a+4)(10a+6)(10a+7)(10a+8)(10a+9)的末兩位為76了
但接下來該如何下手呢?

TOP

我只有想到硬算,follow  你上面的敘述,

把 50! 抽掉所有的因數 5(其實共抽掉 12 個 5),然後再抽掉 12 個因數 2 之後,

被 100 除的餘數會同餘到 \(\displaystyle 76^5\times 1\times 2\times 3\times 4\times 6\times 7\times 8\times 9\times 2\times \frac{1}{2^{12}}\equiv 38^5\times 3\times 6\times 7 \times 9 \equiv 12 \pmod{100} \)

(在最後乘開的時候,每超過 100 就可以去掉,不用全部乘開。)

多喝水。

TOP

補充資料
求100!由右向左第一個不為0的數字
http://forum.nta.org.tw/examservice/showthread.php?t=12657

設90!乘開後最後不為0的兩個數字所形成的二位數為n。試問n為下列哪一個數?
(註:\( k!=k \times (k-1) \times (k-2) \times ... \times 2 \times 1 \))
(A)12 (B)32 (C)48 (D)52 (E)68
(2010AMC10)

中山大學雙週一題 98學年度第二學期第五題
http://www.math.nsysu.edu.tw/~problem/2010s/982Q&A.htm
設90!的末位非零三位數為n,試求n值?(請附上推導過程,否則將不予計分)

[ 本帖最後由 bugmens 於 2011-2-22 09:10 PM 編輯 ]

附件

2010AMC10.rar (38.91 KB)

2011-2-22 21:09, 下載次數: 7564

TOP

引用:
原帖由 bugmens 於 2011-2-22 09:09 PM 發表
補充資料
求100!由右向左第一個不為0的數字
http://forum.nta.org.tw/examservice/showthread.php?t=12657

設90!乘開後最後不為0的兩個數字所形成的二位數為n。試問n為下列哪一個數?
(註:\( k!=k \times (k-1) \times\) ...
舊論壇提到:
[求"由右向左第一個不為0的數字",只考慮"個位數字"的積(100)! = [(10)!]^10]
這句話好像有問題,100!剛好可以這樣做,但90!就不行了.

TOP

分享免費的自由軟體 "統計R"
將50! 等大數乘開如下:
50!=
3 0 4 1 4 0 9 3 2 0 1 7 1 3 3 7 8 0 4 3 6 1 2 6 0 8 1 6 6 0 6 4 7 6 8 8 4 4 3 7 7 6 4 1 5 6 8 9 6 0 5 1 2 0 0 0 0 0 0 0 0 0 0 0 0

90!=
1 4 8 5 7 1 5 9 6 4 4 8 1 7 6 1 4 9 7 3 0 9 5 2 2 7 3 3 6 2 0 8 2 5 7 3 7 8 8 5 5 6 9 9 6 1 2 8 4 6 8 8 7 6 6 9 4 2 2 1 6 8 6 3 7 0 4 9 8 5 3 9 3 0 9 4 0 6 5 8 7 6 5 4 5 9 9 2 1 3 1 3 7 0 8 8 4 0 5 9 6 4 5 6 1 7 2 3 4 4 6 9 9 7 8 1 1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

500!=  (約10秒)
1 2 2 0 1 3 6 8 2 5 9 9 1 1 1 0 0 6 8 7 0 1 2 3 8 7 8 5 4 2 3 0 4 6 9 2 6 2 5 3 5 7 4 3 4 2 8 0 3 1 9 2 8 4 2 1 9 2 4
1 3 5 8 8 3 8 5 8 4 5 3 7 3 1 5 3 8 8 1 9 9 7 6 0 5 4 9 6 4 4 7 5 0 2 2 0 3 2 8 1 8 6 3 0 1 3 6 1 6 4 7 7 1 4 8 2 0 3
5 8 4 1 6 3 3 7 8 7 2 2 0 7 8 1 7 7 2 0 0 4 8 0 7 8 5 2 0 5 1 5 9 3 2 9 2 8 5 4 7 7 9 0 7 5 7 1 9 3 9 3 3 0 6 0 3 7 7
2 9 6 0 8 5 9 0 8 6 2 7 0 4 2 9 1 7 4 5 4 7 8 8 2 4 2 4 9 1 2 7 2 6 3 4 4 3 0 5 6 7 0 1 7 3 2 7 0 7 6 9 4 6 1 0 6 2 8
0 2 3 1 0 4 5 2 6 4 4 2 1 8 8 7 8 7 8 9 4 6 5 7 5 4 7 7 7 1 4 9 8 6 3 4 9 4 3 6 7 7 8 1 0 3 7 6 4 4 2 7 4 0 3 3 8 2 7
3 6 5 3 9 7 4 7 1 3 8 6 4 7 7 8 7 8 4 9 5 4 3 8 4 8 9 5 9 5 5 3 7 5 3 7 9 9 0 4 2 3 2 4 1 0 6 1 2 7 1 3 2 6 9 8 4 3 2
7 7 4 5 7 1 5 5 4 6 3 0 9 9 7 7 2 0 2 7 8 1 0 1 4 5 6 1 0 8 1 1 8 8 3 7 3 7 0 9 5 3 1 0 1 6 3 5 6 3 2 4 4 3 2 9 8 7 0
2 9 5 6 3 8 9 6 6 2 8 9 1 1 6 5 8 9 7 4 7 6 9 5 7 2 0 8 7 9 2 6 9 2 8 8 7 1 2 8 1 7 8 0 0 7 0 2 6 5 1 7 4 5 0 7 7 6 8
4 1 0 7 1 9 6 2 4 3 9 0 3 9 4 3 2 2 5 3 6 4 2 2 6 0 5 2 3 4 9 4 5 8 5 0 1 2 9 9 1 8 5 7 1 5 0 1 2 4 8 7 0 6 9 6 1 5 6
8 1 4 1 6 2 5 3 5 9 0 5 6 6 9 3 4 2 3 8 1 3 0 0 8 8 5 6 2 4 9 2 4 6 8 9 1 5 6 4 1 2 6 7 7 5 6 5 4 4 8 1 8 8 6 5 0 6 5
9 3 8 4 7 9 5 1 7 7 5 3 6 0 8 9 4 0 0 5 7 4 5 2 3 8 9 4 0 3 3 5 7 9 8 4 7 6 3 6 3 9 4 4 9 0 5 3 1 3 0 6 2 3 2 3 7 4 9
0 6 6 4 4 5 0 4 8 8 2 4 6 6 5 0 7 5 9 4 6 7 3 5 8 6 2 0 7 4 6 3 7 9 2 5 1 8 4 2 0 0 4 5 9 3 6 9 6 9 2 9 8 1 0 2 2 2 6
3 9 7 1 9 5 2 5 9 7 1 9 0 9 4 5 2 1 7 8 2 3 3 3 1 7 5 6 9 3 4 5 8 1 5 0 8 5 5 2 3 3 2 8 2 0 7 6 2 8 2 0 0 2 3 4 0 2 6
2 6 9 0 7 8 9 8 3 4 2 4 5 1 7 1 2 0 0 6 2 0 7 7 1 4 6 4 0 9 7 9 4 5 6 1 1 6 1 2 7 6 2 9 1 4 5 9 5 1 2 3 7 2 2 9 9 1 3
3 4 0 1 6 9 5 5 2 3 6 3 8 5 0 9 4 2 8 8 5 5 9 2 0 1 8 7 2 7 4 3 3 7 9 5 1 7 3 0 1 4 5 8 6 3 5 7 5 7 0 8 2 8 3 5 5 7 8
0 1 5 8 7 3 5 4 3 2 7 6 8 8 8 8 6 8 0 1 2 0 3 9 9 8 8 2 3 8 4 7 0 2 1 5 1 4 6 7 6 0 5 4 4 5 4 0 7 6 6 3 5 3 5 9 8 4 1
7 4 4 3 0 4 8 0 1 2 8 9 3 8 3 1 3 8 9 6 8 8 1 6 3 9 4 8 7 4 6 9 6 5 8 8 1 7 5 0 4 5 0 6 9 2 6 3 6 5 3 3 8 1 7 5 0 5 5
4 7 8 1 2 8 6 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0

下載與安裝可參考附件
打開R之後
輸入下列指令:
f=function(n)
{
if(n<=1) return(1)
t=0
for(i in 1:n) t=t+log(i,10)
t=ceiling(t)
z=rep(0,t);z[t]=1
for(k in 2:n)
{
   for(i in t:1)
   {
   z[i]=z[i]*k
   }
   for(i in t:1)
   {
   if(z[i]>=10)
   {
   z[i-1]=z[i-1]+floor(z[i]/10)
   z[i]=z[i]%%10
   }
   }
}
z
}
再分別輸入:
f(50)
f(90)
f(500)
即可得上述結果
要算1000!也沒問題

註:可用 f(3)或 f(6)測試

or 網址: http://cran.csie.ntu.edu.tw/
點選「Windows」、「base」、「Download R」

TOP

發新話題