分治演算法 大整數乘法

2021-06-16 07:36:53 字數 781 閱讀 9471

用分治演算法程式設計實現兩個n

位十進位製大整數的乘法運算。 分析

用分治演算法程式設計實現兩個n

位十進位製大整數的乘法運算。

演算法描述

兩個十進位制的數 x ,y;

x=    a*10^n1 +b

y= c*10^n2 +d                 

則 x*y=(a*10^n1+b)*(c*10^n2+d)

設乙個陣列,將其看做10000

進製,然後按照乘法運算,如果設大於

10000

的進製,則兩數相乘很有可能超過

int的資料範圍所以設

10000

進製)

#include

#include

#include

using namespace std;

char c1[100];

char c2[100];

int num1[200];

int num2[100];

int result[205];

int l1,l2;

//將字串轉化為10000進製的數字

int change(int l,int num,char c)

k++;

}if(r!=0)

for(i=r-1;i>=0;i--)

num[k]+=pow(10,(r-1-i))*(c[i]-'0');

k++;

return k;

}//列印

void print(int l)

分治 大整數乘法

第一次自己完整寫對,多多指教 演算法思路 分治。第一步 經過預處理將兩個整數變為長度一樣的兩個數 短的在前面補0 第二部 把兩個大整數都平分為前後兩部分 第三部 按以下公式計算 實現大數乘法之前實現了大數加減法 公式 x a 10 n 2 b y c 10 n 2 d xy ac 10 n a b ...

分治 大整數乘法

問題描述 設x和y是兩個n位的二進位制整數,現在要計算它們的乘積xy,傳統方法計算每2個1位數乘法或加法都看作一步運算,這樣需要o n2 次位運算,代價太高,現在運用分治法設計乙個更有效的大整數乘法演算法。當n 1時,計算x y就是一次位乘。現在對x y進行劃分,把x和y各分為兩段,每段長為n 2 ...

分治遞迴 大整數乘法

設x,y十進位制整數,計算乘積xy。用小學方法設計演算法,計算步驟太多,而且效率低。t n o n 2 所以用分治方法設計更有效的大整數乘法。將n為十進位制整數x,y分為兩段,每段長為n 2 若位數為奇數,每段長為 n 2 n 2 1 x分為a和b,y分為c和d.比如 8945456 即a 89,b...