演算法題 高精度乘法求組合數(Python)

2021-10-14 04:01:52 字數 1161 閱讀 7309

輸入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陣列,並考慮進製,兩個數的最大位就是兩個位數加起來,最後輸出時把前面的零去...