K11774 X进制整数加法

98 篇文章 1 订阅
17 篇文章 0 订阅

题目描述

计算x进制整数a+b的值,( 0 <= a, b <= 10^100);

输入格式

第一行:一个整数x( 2 <=x<=10 || x=16),表示第二行的两个整数位x进制数。

第二行:两个用空格分割的x进制整数a和b.

输出格式

一行:a+b的值 (按原进制输出)

输入输出样例

输入样例1:
10
10 15
输出样例1:
25
输入样例2:
16
A B
输出样例2:
15

【耗时限制】1000ms 【内存限制】128MB

//
//Created by Carlgood.
//
//Note:This program is written in version DEV-C++ 5.11.
//Subject source:"hppt://oj.codingle.cn"
# include <iostream>
# include<cmath>
# include<string>
# include<cstring>
# include<cstdio>
# include<algorithm>
# include<sstream>
# define This_program_is_written_by_Carlgood_Programming_Studio 9876543210
using namespace std;
int a[210],b[210],c[210];
string high_precision(string as,string bs,int x)
{
	memset(a,0,sizeof(a));
	memset(b,0,sizeof(b));
	memset(c,0,sizeof(c));
	int alen=as.size(),blen=bs.size(),clen=max(alen,blen)+1;
	for(int i=1;i<=alen;i++)
	{
		if(as[alen-i]>='0'&&as[alen-i]<='9')
		{
			a[i]=as[alen-i]-'0';
		}
		else 
		{
			a[i]=as[alen-i]-'A'+10;
		}
	}
	for(int i=1;i<=blen;i++)
	{
		if(bs[blen-i]>='0'&&bs[blen-i]<='9')
		{
			b[i]=bs[blen-i]-'0';
		}
		else
		{
			b[i]=bs[blen-i]-'A'+10;
		}
	}
	for(int i=1;i<=clen;i++)
	{
		c[i]+=a[i]+b[i];
		c[i+1]=c[i]/x;
		c[i]%=x;
	}
	while(c[clen]==0&&clen>1) clen--;
	string ans;
	for(int i=clen;i>=1;i--)
	{
		if(c[i]>=0&&c[i]<=9)
		{
			ans+=c[i]+'0';
		}
		else
		{
			ans+=c[i]-10+'A';
		}
	}
	return ans;
}
int main()
{
	string a,b;
	int x;
	cin>>x>>a>>b;
	cout<<high_precision(a,b,x);
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值