您的位置:首页 > 编程语言 > C语言/C++

C++ 大数乘法

2013-01-13 14:00 204 查看
http://acm.buaa.edu.cn/problem/163/

#include <iostream>
#include <cstring>
using namespace std;
#define maxn 2000
char c1[999], c2[999];
int a[999], b[999];
int r[maxn];

void print(int a[], int b[], int la, int lb)
{
int i, j;
for(i = 0; i != maxn; i++) r[i] = 0;
for(i = 0; i != la; i++)
{
for(j = 0; j != lb; j++)
{
int k = i + j;
r[k] += a[i] * b[j];
while(r[k] > 9)
{
r[k + 1] += r[k] / 10;
r[k] %= 10;
k++;
}
}
}
int l = la + lb - 1;
while(r[i] == 0 && l > 0) l--;
for(int i = l; i >= 0; i--) cout << r[i];
cout << endl;
}

int main()
{
while(cin >> c1 >> c2)
{
int la = strlen(c1);
int lb = strlen(c2);
for(int i = 0; i != la; i++)
a[i] = (int)(c1[la - i - 1] - '0');
for(int i = 0; i != lb; i++)
b[i] = (int)(c2[lb - i - 1] - '0');
print(a, b, la, lb);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: