Sxu520 @ 2024-09-19 18:04:39
#include<iostream>
using namespace std;
void daoxu(int a[],int t){
int temp=0;
for(int i=0;i<t/2;i++){
temp=a[i];
a[i]=a[t-1-i];
a[t-1-i]=temp;
}
} //将数列倒序重排
int main(){
int a[2005]={0},b[2005]={0},c[4010]={0};
int p=0,q=0;
char ch;
for(int i=0;;i++){
ch=getchar();
if(ch=='\n')
break;
a[i]=ch-'0';
p++;
}
for(int i=0;;i++){
ch=getchar();
if(ch=='\n')
break;
b[i]=ch-'0';
q++;
}
daoxu(a,p);
daoxu(b,q); //分别把a b数列倒序,a[0] b[0]都为个位
for(int i=0;i<p;i++){
for(int j=0;j<q;j++){
c[i+j]+=a[i]*b[j];
}
} //使a b中每一位分别相乘,并放到c数组中对应的位置上
for(int i=0;i<4000;i++){
if(c[i]>=10){
c[i+1]+=c[i]/10;
c[i]=c[i]%10;
}
} //对c数组从个位开始进位
int k=0;
for(int i=4000;i>=0;i--){
if(k==0&&c[i]!=0){
k=1;
}
if(k==1)
cout<<c[i];
} //从后面更高位开始输出c数组,得到相乘结果
if(k==0)
cout<<'0'; //若c中全为零,即相乘结果为0则输出0
return 0;
}
by Cstong_y @ 2024-09-19 18:34:27
a = int(input())
b = int(input())
sum = a * b
print(sum)
by lostxxx @ 2024-09-19 18:39:46
@Sxu520 也许你应该换一种输入方式,比如说。
char a[20010];
cin>>a;
因为测试数据最后一行不一定有换行符 \n
by Sxu520 @ 2024-09-19 19:09:46
@lostxxx 哇偶真的耶,感谢大佬,已关注
by Sxu520 @ 2024-09-19 19:10:45
@Lxzrdg 感谢感谢,不过你这是python的吧,我用的是c++