给出2个大整数A,B,计算A*B的结果。
Input
第1行:大数A 第2行:大数B (A,B的长度 <= 1000,A,B >= 0)
Output
输出A * B
Input示例
123456 234567
Output示例
28958703552
#include<stdio.h> #include<algorithm> #include<string.h> using namespace std; #define INF Ox3f3f3f3f char a[1001],b[1001]; int ai[1001],bi[1001]; int c[2002]; char str[2002]; int main(){ int i,j; scanf("%s%s",a,b); int len_a=strlen(a); int len_b=strlen(b); memset(c,0,sizeof(c)); memset(str,0,sizeof(str)); int k=0; for(i=len_a-1;i>=0;i--) ai[k++]=a[i]-'0'; k=0; for(i=len_b-1;i>=0;i--) bi[k++]=b[i]-'0'; for(i=0;i<len_b;i++) //用大整数b的每位去乘大整数a { int start=i; //得到的中间结果跟大整数b中的位对齐 for(j=0;j<len_a;j++) c[start++]+=ai[j]*bi[i]; } for(i=0;i<2002;i++){ //低位向高位进位 if(c[i]>9){ c[i+1]+=c[i]/10; c[i]=c[i]%10; } } for(i=2002;i>=0;i--) //求乘积的长度 { if(c[i]) break; } int lenp=i+1; //乘积的长度 for(i=0;i<lenp;i++) //将乘积转换成字符形式 str[lenp-1-i]=c[i]+'0'; //str[lenp]=0; //串结束标志 printf("%s\n",str); return 0; }