题解 P1952 【火星上的加法运算_NOI导刊2009提高(3)】

来一发用高精度做的

其实方法和正常的十进制高精加一样,只不过把10换成了n

中间还要特判484字符……

29行代码走起(代码风格过丑):

#include<bits/stdc++.h>
using namespace std;
int a[1005],b[1005],c[1005];
char s1[1005],s2[1005];
int main()
{
	int n;
	cin>>n>>s1>>s2;
	int l=strlen(s1);
	for(int i=0;i<l;i++)
	if(s1[i]>='a'&&s1[i]<='z') a[l-i]=s1[i]-87;
		else a[l-i]=s1[i]-48;//输入特判×1
	l=strlen(s2);
	for(int i=0;i<l;i++)
	if(s2[i]>='a'&&s2[i]<='z') b[l-i]=s2[i]-87;
		else b[l-i]=s2[i]-48;//输入特判×2	
	l=max(strlen(s1),strlen(s2));
	for(int i=1;i<=l;i++)
	{//高精加
		c[i]+=a[i]+b[i];
		c[i+1]=c[i]/n;
		c[i]%=n;
	}
	if(c[l+1]) l++;
	for(int i=l;i>0;i--)
	if(c[i]>9) cout<<char(c[i]+87);//输出特判
	else cout<<c[i];
	return 0;
}

QwQ,其实没那么难的各位886

posted @ 2020-03-22 21:28  Laser_Crystal  阅读(220)  评论(0编辑  收藏  举报