2014年6月10日 星期二

大數乘法

#include <cstdlib>
#include <iostream>
#include <cstring>
using namespace std;

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;
    int x=0;
    for (int i=s1.length()-1 ;i>=0;i--)
    {
        n1[x]=s1[i]-'0';
        x++;
    }
    x=0;
    for (int i=s2.length()-1 ;i>=0;i--)
    {
        n2[x]=s2[i]-'0';
        x++;
    }  
    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 k=99;
    while (n3[k]==0)
       k--;
    for (int i=k;i>=0;i--)
       cout << n3[i];
    cout << endl;
    system("PAUSE");
    return EXIT_SUCCESS;
}


沒有留言: