Benny_Li @ 2022-10-27 11:23:03
#include <cstdio>
#include <cstring>
#include <string>
using namespace std;
class number{
public:
int length,real[2000];
number(){
memset(real,0,sizeof(real)),length=0;
}
void read(const char *str){
memset(real,0,sizeof(real));
length=strlen(str);
for(int i=0;i<length;++i){
real[i]=str[length-i-1]-'0';
}
}
void print(){
for(int i=0;i<length;++i){
printf("%c",real[length-i-1]+'0');
}
}
string to_str(){
string res;
for(int i=0;i<length;++i){
res=(char)(real[i]+'0')+res;
}
return res;
}
protected:
friend number operator+(number x,number y){
number res;
res.length=max(x.length,y.length)+1;
for(int i=0;i<res.length;++i){
res.real[i]+=x.real[i]+y.real[i];
res.real[i+1]+=res.real[i]/10;
res.real[i]%=10;
}
while(!res.real[res.length-1]&&res.length-1)--res.length;
return res;
}
friend number operator*(number x,number y){
number res;
res.length=x.length+y.length;
for(int i=0;i<x.length;++i){
for(int j=0;j<y.length;++j){
res.real[i+j]+=x.real[i]*y.real[j];
res.real[i+j+1]+=(res.real[i+j]/10);
res.real[i+j]%=10;
}
}
while(!res.real[res.length-1]&&res.length-1)--res.length;
return res;
}
};
number a,b;
char str[2000];
int main(){
scanf("%s",&str);
a.read(str);
scanf("%s",&str);
b.read(str);
printf("%s",(a*b).to_str().c_str());
return 0;
}
最后一个点WA了……
by Kevin_Mamba @ 2022-10-27 11:34:28
若你是只想刷题,就用
a=int(input())
b=int(input())
print(a*b)
by Benny_Li @ 2022-10-27 11:37:41
@2124Kobe ……
我已经ac过了,这是拓展……