陣解牛。
首先,定義壹個ns數組來存儲n!利用for循環將10000的0值加到ns上,從而直接根據索引操作數組。
然後將length定義為“數組的長度”(用實值代替自動加0),即n!結果的位數。
之後,for循環也必須用於乘法,但它不同於方案1的直接乘法,方案1中乘數(即I)乘以每壹位上的數,如果結果大於或等於10,carry >: 0表示向前壹位數值為carry,如果carry & gt0表示當前ns的“長度”中需要壹位,所以length+1表示位數+1,其中carry起到判斷是否進位的作用,length表示結果的位數。
n= int(input())
ns = [0表示範圍內的I(10000)]
n= int(input())
ns = [0表示範圍內的I(10000)]
長度= 1
ns[0] =長度= 1
如果n & gt=2:
#對於範圍內的I(2,n+1):
# #進位= 0
# #範圍內的j(長度):
###temp = ns[j] * i +進位
###carry = int(temp/10)
###ns[j] = temp % 10
# #當進位>時;0:
###ns[length] +=進位%10
# # #長度+=1
###carry = int(carry/10)
而長度& gt0:
#長度-=1
#print(ns[length],end= ' ')
將#替換為要運行的空格。
如果輸入1000,則計算1000!
解決方案2
打印()
M=int(input("計算m!,請輸入整數m:"))
導入數學
a = sum([math . log 10(I)for I in range(1,m+1)])
b=int(a)
c=a-b
打印(f“{ m }!={10**c}*10^{b}')