freakflowey98 @ 2020-09-18 22:27:49
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
string num1;
string num2;//储存输入的字符串
int data1[1000]={0};
int data2[1000]={0};//加数
int ans[2000]={0}; //答案
int main() {
std::cin>>num1;
std::cin>>num2;//输入
reverse(num1.begin(),num1.end());
reverse(num2.begin(),num2.end());//反转加数以便做加法
int len1=num1.length();
int len2=num2.length();//两个数的长度
for (int i=0;i<len1;i++) data1[i]=num1[i]-48;
for (int i=0;i<len2;i++) data2[i]=num2[i]-48;
//将输入的字符串化为加数
int car=0;//进位
for (int i=0;i<len1;i++) {
car=0;
for (int j=0;j<len2;j++) {
ans[i+j]+=data1[i]*data2[j]+car;
car=ans[i+j]/10;
ans[i+j]%=10;
}
//每一遍循环之后的进位
ans[i+len2]+=car;
}
int ind=len1+len2;
while (ind>0&&ans[ind]==0) ind--;
//去掉前面多余的0
for (int i=ind;i>=0;i--)
std::cout<<ans[i];//输出答案
return 0;//华丽收尾
}
by Water_Cows @ 2020-09-18 22:49:57
数组开小了。。。。
by 不近女色 @ 2020-10-04 16:15:54
1.别用string,用char数组,不然最后一个用例很可能超时。 2.数组长度不够,我开的长度是10001才过了最后的用例。
by liweiqing @ 2021-01-10 17:13:25
2001、 4002足以
char a[2001],b[2001];
int aa[2001],bb[2001],ans[4002];