2014年6月10日 星期二

大數乘法

#include <cstdlib>
#include <iostream>
#include <cstring>
using namespace std;
int mul(int *n1,int *n2,int *n3)
{
 for (int i=0;i<100;i++)
    {
        for (int j=0;j<100;j++)
        {
            n3[i+j] =n3[i+j]+ n1[j] * n2[i];
            if (n3[i+j]>9)
            {
               n3[i+j+1] =n3[i+j+1]+ n3[i+j]/10;
               n3[i+j]=n3[i+j]%10;
             }
        }      
    }  
}

int toBig(string s,int *n)
{
    int  x=0;
    for (int i=s.length()-1 ;i>=0;i--)
    {
        n[x]=s[i]-'0';
        x++;
    }
}

int outResult(int *n)
{
    int k=99;
    while (n[k]==0)
       k--;
    for (int i=k;i>=0;i--)
       cout << n[i];
    cout << endl;
}

int main()
{
    string s1,s2;
    int  n1[100], n2[100], n3[100];
    memset(n1,0,100*sizeof(n1[0]));
    memset(n2,0,100*sizeof(n1[0]));
    memset(n3,0,100*sizeof(n1[0]));
    cin >> s1>>s2;
 
    toBig(s1,n1);
    toBig(s2,n2);
 
    mul(n1,n2,n3);
    outResult(n3);
 
    system("PAUSE");
    return EXIT_SUCCESS;
}

沒有留言: