比赛 |
普及组2016模拟练习4 |
评测结果 |
AAAAAAAAAA |
题目名称 |
火星上的加法运算 |
最终得分 |
100 |
用户昵称 |
_IOSTREAM_ |
运行时间 |
0.003 s |
代码语言 |
C++ |
内存使用 |
14.69 MiB |
提交时间 |
2016-11-17 20:38:20 |
显示代码纯文本
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<climits>
#include<string>
#include<iostream>
#include<algorithm>
using namespace std;
#define SIZE 16777216
char inbuf[SIZE],*HEAD=inbuf,*TAIL=inbuf;
#define getc() (HEAD==TAIL&&(TAIL=(HEAD=inbuf)+fread(inbuf,1,SIZE,stdin),HEAD==TAIL)?0:*HEAD++)
__inline__ __attribute((always_inline))
void read(int& ret){
register int ans=0;
register char CH;
while(CH=getc(),CH<48);
while(ans=ans*10+CH-48,CH=getc(),CH>47);
ret=ans;
}
__inline__ __attribute((always_inline))
void read(char *ch){
register char CH;
register int READITER=0;
while(CH=getc(),CH<48);
while(ch[READITER++]=CH,CH=getc(),CH>47);
ch[READITER]=0;
}
char a[1000],b[1000];
int main(){
freopen("madition.in","r",stdin);
freopen("madition.out","w",stdout);
register int n,len;
read(n);read(a);read(b);
int la=strlen(a),lb=strlen(b);
for(register int i=0;i<la;i++)
if(a[i]<97)a[i]-=48;
else a[i]-=87;
for(register int i=0;i<lb;i++)
if(b[i]<97)b[i]-=48;
else b[i]-=87;
for(register int i=0,j=la-1;i<=j;i++,j--)
swap(a[i],a[j]);
for(register int i=0,j=lb-1;i<=j;i++,j--)
swap(b[i],b[j]);
if(la<lb){
for(register int i=0;i<la;i++){
a[i]+=b[i];
if(a[i]>=n)a[i]-=n,a[i+1]++;
}
for(register int i=la;i<lb;i++){
a[i]+=b[i];
if(a[i]>=n)a[i]-=n,a[i+1]++;
}
if(a[lb])len=lb+1;
else len=lb;
for(register int i=0;i<len;i++)
if(a[i]<10)a[i]+=48;
else a[i]+=87;
}else if(la>lb){
for(register int i=0;i<lb;i++){
a[i]+=b[i];
if(a[i]>=n)a[i]-=n,a[i+1]++;
}
for(register int i=lb;i<la;i++){
if(a[i]>=n)a[i]-=n,a[i+1]++;
}
if(a[la])len=la+1;
else len=la;
for(register int i=0;i<len;i++)
if(a[i]<10)a[i]+=48;
else a[i]+=87;
}else{
for(register int i=0;i<la;i++){
a[i]+=b[i];
if(a[i]>=n)a[i]-=n,a[i+1]++;
}
if(a[la])len=la+1;
else len=la;
for(register int i=0;i<len;i++)
if(a[i]<10)a[i]+=48;
else a[i]+=87;
}
for(register int i=0,j=len-1;i<=j;i++,j--)swap(a[i],a[j]);
puts(a);
return 0;
}