C++實現高精度乘法
阿新 • • 發佈:2018-12-31
由於計算機的儲存位元組有限,所以不能完整表示一個很大整數的精確值,這時候就得用到其他的方法,稱之為高精度演算法。這裡,主要說下高精度乘法。高精度乘法,實際上,就是模擬乘法的過程。像小學的筆算過程。
#include <iostream> using namespace std; int main() { int a[100],b[100],c[100],len,la,lb,i,j; long long n,m; cin>>n>>m; la=0; while(n>0) { la++; a[la]=n%10; n=n/10; } lb=0; while(m>0) { lb++; b[lb]=m%10; m=m/10; } memset(c,0,sizeof(c)); for(i=1;i<=la;i++) for(j=1;j<=lb;j++) c[i+j-1]=c[i+j-1]+a[i]*b[j]; len=la+lb; for(i=1;i<=len;i++) { c[i+1]=c[i+1]+c[i]/10; c[i]=c[i]%10; } while(c[len]==0){len--;} m=c[len]; while(m>0) { c[len]=m%10; m=m/10; len++; } for(i=len-1;i>=1;i--) {cout<<c[i];} cout<<endl; return 0; }