sdnu 1280.就问你慌不慌 (高精度N进制加法)
Description
求N进制的高精度加法
Input
第一行输入N(2≤N≤10)
第二行两个数X Y(长度均≤100)
Output
输出N进制下X和Y的和
Sample Input
5 2 4
Sample Output
11
Source
时隔4个月。。我终于AC了这道题
我也不知道为什么把字符数组换成string就RE
orz
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
char x[120],y[120],s[120];
scanf("%s%s",x+1,y+1);
int lenx=strlen(x)-1;
int leny=strlen(y)-1;
if(lenx<leny)
{
for(int i=1;i<=leny;i++)
swap(x[i],y[i]);
swap(lenx,leny);
}
reverse(x+1,x+lenx+1);
reverse(y+1,y+leny+1);
// cout<<x<<' '<<y<<'\n';
int tmp=0;
for(int i=1;i<=leny;i++)
{
s[i]=((x[i]-'0')+(y[i]-'0')+tmp)%n+'0';
tmp=((x[i]-'0')+(y[i]-'0')+tmp)/n;
}
for(int i=leny+1;i<=lenx;i++)
{
s[i]=((x[i]-'0')+tmp)%n+'0';
tmp=((x[i]-'0')+tmp)/n;
}
if(tmp!=0)
cout<<tmp;
for(int i=lenx;i>=1;i--)
cout<<s[i];
cout<<'\n';
}
return 0;
}