18732010135dd @ 2024-09-01 23:03:26
#include<bits/stdc++.h>
using namespace std;
void mul(int a[],int b[],int c[]){
for(int i=1;i<=b[0];i++){
int x=0;
for(int j=1;j<=a[0];j++){
c[i+j-1]=c[i+j-1]+x+b[i]*a[j];
x=c[i+j-1]/10;
c[i+j-1]%=10;
}
c[i+a[0]]=x;
}
if(c[a[0]+b[0]]>0){
c[0]=a[0]+b[0];
}else{
c[0]=a[0]+b[0]-1;
}
}
void init(int a[]){
string s;
cin>>s;
a[0]=s.length();
for(int i=1;i<=a[0];i++){
a[i]=s[a[0]-i]-'0';
}
}
int main() {
int a[10000]={0},b[10000]={0},c[10000]={0};
init(a);
init(b);
mul(a,b,c);
for(int i=c[0];i>0;i--){
cout<<c[i];
}
return 0;
}
by lxr_Galaxy @ 2024-09-01 23:09:49
#include<iostream>
#include<cstring>
using namespace std;
int main(){
char a_str[2005]={};
char b_str[2005]={};
cin>>a_str>>b_str;
int a[2005]={},b[2005]={};
int len_a=strlen(a_str),len_b=strlen(b_str);
for(int i=0;i<=len_a-1;i++){
a[len_a-i-1]=a_str[i]-48;
}
for(int i=0;i<=len_b-1;i++){
b[len_b-i-1]=b_str[i]-48;
}
int ans[4010]={};
int in=0;
for(int j=0;j<=len_b-1;j++){
for(int i=0;i<=len_a-1;i++){
ans[i+j]=a[i]*b[j]+in+ans[i+j];
in=ans[i+j]/10;
ans[i+j]%=10;
}
ans[len_a+j]=in;
in=0;
}
int len_ans=len_a+len_b;
while(ans[len_ans-1]==0 && len_ans>1){
len_ans--;
}
for(int i=len_ans-1;i>=0;i--){
cout<<ans[i];
}
}
我明天要上学,你先对着看下吧QAQ
by xueshengyi @ 2024-09-01 23:10:02
要去掉前导0
by CaoSheng_zzz @ 2024-09-02 00:50:11
不会
by 立柱已选162534 @ 2024-09-02 07:23:08
@18732010135dd 0乘上一个比较大的数会出错
by 18732010135dd @ 2024-09-02 16:45:47
谢谢大佬,已关