大数乘大数
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
char * multiply(char *a,char *b,char *c)
{
int i,j;
int righta,rightb,up,jj;
int len1 = strlen(a);
int len2 = strlen(b);
for(i=0 ; i<(len1+len2+1) ; i++)
c[i] = '0';
jj = up = 0;
int x,y,z;
for(righta = len1-1 ; righta>=0 ; righta--)
{
j = jj;
for(rightb = len2-1 ; rightb>=0 ; rightb--,j++)
{
x = a[righta]-'0';
y = b[rightb]-'0';
z = (c[j]-'0')+x * y + up;
if(z >= 10)
{
up = z/10;
z = z%10;
c[j] = z + '0';
}
else
{
up = 0;
c[j] = z + '0';
}
}
if(up)
{
c[j] = up + '0';
up = 0;
j++;
}
jj++;
}
j--;
while(c[j] == '0' && j>0) j--;
c[++j] = 0;
char ch;
for(i=0 ,j--; i<j ; i++,j--)
ch = c[i],c[i]=c[j],c[j]=ch;
return c;
}
int main()
{
char a[110],b[110],c[110];
FILE *pInput,*pOutput;
pInput = fopen("in.txt","r");
pOutput = fopen("out.txt","w");
while(fscanf(pInput,"%s%s",a,b) == 2)
{
fprintf(pOutput,"%s\n",multiply(a,b,c));
}
fclose(pInput);
fclose(pOutput);
return 0;
}
输入文件in.txt,每行两个数字,空格隔开