/****************************************/
/*程序 pku1001*/
/*作者: S.Klaus */
/*日期:2005-7-5*/
/*调试:VC6*/
/****************************************
****************************************/
/*头函数 */
#include<iostream.h>
#include<iomanip.h>
#include<stdlib.h>
#include<string.h>
#define max 10000
/***************************************/
int fmul(char s1[],char s2[]);
/***************************************/
char sum[max];
char result[max];
/***************************************/
/*子函数计算两个数的乘积*/
int fmul(char s1[],char s2[])
{
int ls1,ls2;//用于存储长度,进位信息
int i=0,j,p,q,m;
int k=0,flag;
char mid[max];
//char sum[max];
ls1=strlen(s1);
ls2=strlen(s2);
//反向
j=ls1-1;
while(j>=0)
{
mid[i++]=s1[j--];
}
mid[i]=s1[ls1];
strcpy(s1,mid);
i=0;
j=ls2-1;
while(j>=0)
{
mid[i++]=s2[j--];
}
mid[i]=s2[ls2];
strcpy(s2,mid);
// cout<<s1<<endl<<s2<<endl;
//计算
for(i=0;i<max;i++)
{
sum[i]='0';
}
i=j=k=0;
flag=0;
p=0;q=0;
while(s2[i]!='\0')
{
flag=0;
m=q;
for(m=0;m<q;m++)
{
mid[m]='0';
}
p=m;
while(s1[j]!='\0')
{
k=(s1[j]-'0')*(s2[i]-'0');
mid[p]=(flag+k)%10+'0';
flag=(flag+k)/10;
j++;p++;
}
if(flag!=0){mid[p++]=flag+'0';}
mid[p]='\0';
flag=0;
p=0;
//*********************************************/
if(i==0)
{
while(mid[p]!='\0')
{
sum[p]=mid[p];
p++;
}
}
else
{
while(mid[p]!='\0')
{
k=(sum[p]-'0')+(mid[p]-'0');
sum[p]=(k+flag)%10+'0';
flag=(k+flag)/10;
p++;
}
if(flag!=0)
{
sum[p++]=flag+'0';
flag=0;
}
}
j=0;
i++;q++;
}
sum[p]='\0';
i=0;j=0;
strcpy(mid,sum);
p-=1;
while(p>=0)
{
sum[j]=mid[p];
p--;
j++;
}
sum[j]='\0';
return 0;
}
/***************************************/
/***************************************/
/***************************************/
/*主函数*/
int main()
{
return 0;
}