记录编号 |
51087 |
评测结果 |
AAAAAAAAAA |
题目名称 |
增强的加法问题 |
最终得分 |
100 |
用户昵称 |
cstdio |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.004 s |
提交时间 |
2012-12-10 20:03:44 |
内存使用 |
0.31 MiB |
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<iomanip>
#include<cstring>
using namespace std;
//注意:先预处理a,b,c的s和l
const int SIZE=200;
struct haint{
char s[SIZE];//数
int l;//长度,不是指针
};
void turnint(struct haint &x){
int i;
for(i=0;i<x.l;i++) x.s[i]-='0';
}
void turnchar(struct haint &x){
int i;
for(i=0;i<x.l;i++) x.s[i]+='0';
}
void haclear(struct haint &x){
int i;
for(i=0;i<SIZE;i++) x.s[i]=0;
}
void haneg(struct haint &x){//翻转某个数组
int i=0,j=x.l-1,temp;
while(i<=j) temp=x.s[i],x.s[i]=x.s[j],x.s[j]=temp,i++,j--;
}
void haplus(struct haint &a,struct haint &b,struct haint &c){//a+b存于c
turnint(a),turnint(b);//如果a,b中是数就给本行加上注释
haneg(a),haneg(b);//如果a,b是逆序就给本行加上注释
int i,l=(a.l>b.l)?a.l:b.l;
for(i=0;i<l;i++){
c.s[i]+=a.s[i]+b.s[i];
c.s[i+1]+=c.s[i]/10;
c.s[i]%=10;
}
if(c.s[l]!=0) l++;
c.l=l;
turnchar(c);//如果想保存数字就给本行加上注释
haneg(c);//如果想保存逆序就给本行加上注释
}
int main(){
freopen("add.in","r",stdin);
freopen("add.out","w",stdout);
struct haint a,b,c;
haclear(a),haclear(b),haclear(c);
cin>>a.s>>b.s;
a.l=strlen(a.s),b.l=strlen(b.s);
haplus(a,b,c);
cout<<c.s<<endl;
return 0;
}