輸入a,,求cba的值。
注意結果可能很大,需要使用高精度計算。
輸入格式
共一行,包含兩個整數a和b。
輸出格式
共一行,輸出cba的值。
資料範圍
1≤b≤a≤5000
輸入樣例:
5 3
輸出樣例:
10
# 線性篩法篩質數
def get_primes(n):
primes =
st = [true]*n
for i in range(2, n):
if st[i]:
for p in primes:
if p * i >= n: break # 超出n的範圍
st[p * i] = false
if i % p == 0: break # i * p(j+1) 會在
return primes
# 計算n!階乘中p的次數
def get_times(n, p):
res = 0
while n:
res += n // p
n //= p
return res
# 高精度乘法,a為陣列,b為常數
def mul(a, b):
c =
t = 0 # 記錄之前的高位
for i in range(len(a)):
t += a[i] * b
t //= 10
while t:
t //= 10
return c
a, b = map(int, input().split())
primes = get_primes(a+1)
res = [1]
for p in primes:
times = get_times(a, p) - get_times(a - b, p) - get_times(b, p)
for i in range(times):
res = mul(res, p)
res.reverse()
print("".join([str(x) for x in res]))
演算法 高精度乘法2(高精度乘高精度)
題目描述 高精度乘,求兩個很大的非負整數相乘的結果。輸入 2個非負整數,每個一行,每個整數不超過240位。輸出 乙個整數,表示相乘的結果。例子 為了和演算法對應方便,用上面數乘下面數的方法12 5 2512 5502 5312 5為了運算方便,將上面兩數倒置,得到的結果也為倒序下標0 1234 56...
模板題 高精度乘法
給定兩個正整數a和b,請你計算a b的值。輸入格式 共兩行,第一行包含整數a,第二行包含整數b。輸出格式 共一行,包含a b的值。資料範圍 1 a的長度 100000,1 b 10000 輸入樣例 23 輸出樣例 6乘數a 1 a的長度 100000,乘數b 1 b 10000 模仿手工乘法 a n...
高精度演算法之乘法
輸入兩個高精度整數m和n m和n均不小於0且不超過100位 求這兩個高精度數的積。每一組測試資料佔2行,一行乙個整數 每一組測試資料輸出佔一行,輸出乘積 36 3108思路 典型的高精度問題,兩個變數控制結果,i和j控制sum陣列,並考慮進製,兩個數的最大位就是兩個位數加起來,最後輸出時把前面的零去...