UVA 424

#include <iostream>
#include <cmath>
#include <string>
using namespace std;
#define h 120
void he(char x[], char y[],char z[])
{
	int a = strlen(x), b = strlen(y), c=0, i;
	for ( i = 1;i <= a;i++)
	{
		if (c == 0)
		{
			if (x[a - i] + y[i] - '0' - '0' > 9)
				z[i] = x[a - i] + y[i] - '0' - 10, c = 1;
			else z[i] = x[a - i] + y[i] - '0';
		}
		else
		{
			if (x[a - i] + y[i] - '0' - '0'+1 > 9)
				z[i] = x[a - i] + y[i] - '0' - 10+1;
			else z[i] = x[a - i] + y[i] - '0'+1,c=0;
		}
	}
	if (c == 1)
	{
		for (;i <= h-2;i++)
		{
			if (c == 1)
			{
				if (z[i] + 1 - '0' > 9)
					z[i] = z[i]+1-10;
				else z[i] += 1,c=0;
			}
			else break;
		}
	}
}
char a[h], c[h], z[h];
int main()
{
	for (int i = 0;i <= h-2;i++)
		c[i] = '0', z[i] = '0';
	c[h-1] = 0, z[h-1] = 0;
	while (cin >> a)
	{
		if (a[0] == '0')
			break;
		he(a, c,z);
		for (int i = 1;i < h-2;i++)
			c[i] = z[i];
	}
	for (int i = h-2;i != 0;i--)
	{
		if (z[i] == '0')
			z[i] = 0;
		else if (z[i] != '0')
			break;
	}
	for (int i = strlen(z)-1;i != 0;i--)
		cout << z[i];
	cout << endl;
}

高精度的话只要记住了算法,然后根据条件加点很简单的东西就莫得问题了,虽然不知道为什么用哪个环境都过不了,但鉴于共精度加法而言我已经基本用的来,例子也过了,所以就放了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值