高精度乘法

#include
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <string.h>
#include <algorithm>
#include <math.h>
#include <limits.h>
#include <queue>
#define inf 0x3f3f3f3f
#define MAXM 200005
using namespace std;
const double pi=3.141592653589793239,e=2.7182818284590452354;



int main(int argc, char** argv) {
    int a[1010]={0},b[1010]={0},ans[1010]={0};
    char c[1010],d[1010];
    int i,j,ch=0,m,n;
    cin>>c>>d;
    n=strlen(c);
    m=strlen(d);
    for(i=0;i<n;i++)
        a[n-i-1]=c[i]-'0';
    for(i=0;i<m;i++)
        b[m-i-1]=d[i]-'0';
    for(i=0;i<m;i++)
        for(j=0;j<n;j++)
        {
            ans[i+j]+=b[i]*a[j];
        }
    for(i=0;i<1010;i++)
    {
        int tmp=ans[i]+ch;
        ans[i]=tmp%10;
        ch=tmp/10;
    }
    for(i=1009;i>=0;i--)
        if(ans[i]!=0) break;
    for(j=i;j>=0;j--) cout<<ans[j];
    cout<<endl;
    return 0;
}





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章