【高精度】密码

Description
在浩浩茫茫的苍穹深处,住着玉帝和他的神仆们,他们闲谈着下界的凡人俗事,对人世间表现的聪明智慧,大加赞赏。今天他们正在观赏大地风光人情之际,忽然从遥远的东海之滨传来一阵欢笑声,玉帝纵目望去,只见镇海中学内聚集了全宁波的中小学精英学生,他们要干什么呢?

原来他们都在做一种破译密码的游戏,人们发现:一根密码棒上的数字加上另一根密码棒上的数字,就是开启天庭司粮库密码锁的的密码。

如:1233+67122=68355,则68355就是一组有效的密码。

"太简单了!"人们高呼起来,继续探索着。

"这不过是早期的密码系统而已。"玉帝轻蔑地环顾神仆们说道。

可是,当人们演算了 139513+3344=142857 后,玉帝的神色愈来愈不对了,要知道,142857是一个特别的数字,这可是天庭的机密,是谁将这些机密泄露给世人的呢?

于是,玉帝搬出一张牌,对司粮库主管神农氏说:"将这张牌打出去,看看他们还逞能不?"

这是天庭中一张王牌,但平凡得很,只不过将密码的位数增大到不超过200位而已,可是难就难在你看到文件:mima.in中的两个数后,必须在1秒钟内将密码输出到文件:mima.out中,否则这组密码就失效了。

玉帝还算是仁慈的,没有将更难的牌打出来,他想把天庭的粮食恩赐人间,但他绝不会给那些不动脑子的人。

现在请你解开天庭司粮库密码锁的密码,帮助人们获得天庭恩赐的粮食。
Input
输入文件mima.in共有两行,每行一个正整数。

Output
输出文件mima.out只有一行,该行只有一个正整数,为输入的两个正整数之和。

Sample Input
1233
67122
Sample Output
68355
HINT
【数据限制】

30%的数据:结果的值<2×10^9。

50%的数据:结果的值<1×10^16。

100%的数据:结果的值<1×10^200。

AC Code:

#include <iostream>
#include <string>

using namespace std;

string a, b;

int main(int argc, char** argv)
{
	int i, l;
	bool f = false;
	
	cin >> a >> b;
	
	if (a.size() < b.size())
	{
		swap(a, b);
	}
	l = a.size() - b.size();
	for (i = 1; i <= l; i++)
	{
		b = "0" + b;
	}
	for (i = a.size() - 1; i >= 0; i--)
	{
		a[i] -= '0';
		a[i] += b[i];
		if (a[i] > '9')
		{
			a[i] -= 10;
			if (i)
			{
				a[i-1]++;
			}
			else
			{
				f = true;
			}
		}
	}
	
	if (f)
	{
		cout << 1;
	}
	cout << a << endl;
	
	return 0;
}

猜你喜欢

转载自blog.csdn.net/drtlstf/article/details/80243972