大佬们救救
#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
char a[2100],b[2100]/*计算数*/,c[2100],d[2100]/*输入储存*/;
int result[4200],list[4200];//储存结果
void change(char a[],char b[],int n) //倒置函数
{
for(int i=0;i<n;++i)
b[i]=a[n-1-i];
return;
}
void change(int a[],int b[],int n) //倒置函数
{
for(int i=0;i<n;++i)
b[i]=a[n-1-i];
return;
}
void myPrint(char a[],int n) //char类型数组输出 ,方便调试
{
for(int i=0;i<n;++i)
cout<<a[i];
return;
}
void myPrint(int a[],int n) //int类型数组输出 ,方便调试
{
for(int i=0;i<n;++i)
cout<<a[i];
return;
}
int main()
{
int m,n,Max; //记录数位
int num,sign; //记录单个数位上的计算结果以及进位信息
cin>>c;
cin>>d;
if(c[0]=='0'||d[0]=='0'){
cout<<"0";
return 0;
}
m=strlen(c); //计算长度
n=strlen(d);
Max=m+n;
memset(result,0,sizeof(result)); //初始化计算结果
memset(a,'0',sizeof(a)); //初始化计算数组
memset(b,'0',sizeof(b));
change(c,a,m); //倒置
change(d,b,n);
for(int i=0;i<n;++i){
sign=0; //每次下一数位运算时重置进位信息
for(int j=0;j<m;++j){
num=(int)(b[i]-'0')*(int)(a[j]-'0')+sign;
if(num>9){
sign=num/10;
num%=10;
}
else
sign=0;
list[i+j]+=num;
if(list[i+j]>9){
sign+=list[i+j]/10;
list[i+j]%=10;
}
}
if(i==n-1&&sign!=0){
while(sign){
num=sign%10;
list[Max-1]=num;
sign/=10;
Max++;
}
}
}
change(list,result,Max-1);
myPrint(result,Max-1);
return 0;
}