记录编号 |
469323 |
评测结果 |
AAAAAAAAAA |
题目名称 |
增强的加法问题 |
最终得分 |
100 |
用户昵称 |
FoolMike |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.002 s |
提交时间 |
2017-11-02 22:01:50 |
内存使用 |
0.31 MiB |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
void add(int *c,int *a,int *b){
int len=max(a[0],b[0]);
for(int i=1;i<=len;++i){
c[i]+=a[i]+b[i];
c[i+1]=c[i]/10000;
c[i]%=10000;
}
c[0]=len+(c[len+1]>0);
}
void sub(int *c,int *a,int *b){
for(int i=1;i<=a[0];i++){
c[i]=a[i]-b[i];
if(c[i]<0)--c[i+1],c[i]+=10000;
}
c[0]=a[0];
while(c[c[0]]==0&&c[0]>1)--c[0];
}
void mul(int *c,int *a,int *b){
for(int i=1;i<=a[0];++i)
for(int j=1;j<=b[0];++j){
c[i+j-1]+=a[i]*b[j];
c[i+j]+=c[i+j-1]/10000;
c[i+j-1]%=10000;
}
c[0]=a[0]+b[0];
while(c[c[0]]==0&&c[0]>1)--c[0];
}
void div(int *c,int *a,int b){
for(int i=c[0]=a[0],h=0;i>=1;i--){
c[i]=a[i]+h*10000;
h=c[i]%b;c[i]/=b;
}
while(c[c[0]]==0&&c[0]>1)--c[0];
}
void print(int *a){
printf("%d",a[a[0]]);
for(int i=a[0]-1;i;--i)printf("%04d",a[i]);
}
void stli(int *c,char *a){
int slen=strlen(a);
c[0]=slen>>2;
int las=slen-(c[0]<<2);
int flag=0;
if(las)for(flag=1,++c[0];las--;)c[c[0]]=c[c[0]]*10+(*a++^48);
for(int i=c[0]-flag;i>0;--i){
c[i]=c[i]*10+(*a++^48);
c[i]=c[i]*10+(*a++^48);
c[i]=c[i]*10+(*a++^48);
c[i]=c[i]*10+(*a++^48);
}
}
int a[100],b[100],c[100];
char s[200];
int main(){
freopen("add.in","r",stdin);
freopen("add.out","w",stdout);
scanf("%s",s);stli(a,s);
scanf("%s",s);stli(b,s);
add(c,a,b);
print(c);
return 0;
}