📄 1.cpp
字号:
#include <stdio.h>
#include <string.h>
#define MAXLEN 10000
#define BASE 10
#define max(x,y) x>y?x:y
char x[MAXLEN],y[MAXLEN];
char ans[MAXLEN];
int lenX,lenY;
int lenAns;
FILE *in,*out;
inline void input(){
char a[MAXLEN],b[MAXLEN];
in=fopen("1.in","r");
fscanf(in,"%s",a);
fscanf(in,"%s",b);
fclose(in);
lenX=strlen(a);
lenY=strlen(b);
for(int i=0;i<lenX;i++)
x[i]=a[lenX-i-1]-'0';
for(int i=0;i<lenY;i++)
y[i]=b[lenY-i-1]-'0';
}
inline void print(){
out=fopen("1.out","w");
for(int i=lenAns-1;i>=0;i--)
fputc(ans[i]+'0',out);
fputc('\n',out);
fclose(out);
}
void add(){
lenAns=max(lenX,lenY);
for(int i=0;i<lenAns;i++){
ans[i]+=x[i]+y[i];
ans[i+1]=ans[i]/BASE;
ans[i]%=BASE;
}
ans[lenAns]?lenAns++:0;
}
void min(){ //保证x>y
lenAns=lenX;
for(int i=0;i<lenAns;i++)
ans[i]=(x[i]<y[i]?x[i+1]--,BASE:0)+x[i]-y[i];
for(;ans[lenAns]==0&&ans[lenAns-1]==0;lenAns--);
}
void mul(){
lenAns=lenX+lenY;
for(int i=0;i<lenX;i++)
for(int j=0;j<lenY;j++){
ans[i+j]+=x[i]*y[j];
ans[i+j+1]+=ans[i+j]/BASE;
ans[i+j]%=BASE;
}
ans[lenAns-1]?:lenAns--;
}
int main(){
input();
mul();
//add();
//min();
print();
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -