记录编号 469323 评测结果 AAAAAAAAAA
题目名称 增强的加法问题 最终得分 100
用户昵称 GravatarFoolMike 是否通过 通过
代码语言 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;
}