View Code of Problem 3497

#include<iostream>
#include<string>
using namespace std;
string jia(string s1, string s2) {
	if (s1.size() > s2.size())swap(s1, s2);
	int len = s2.size() - s1.size();
	for (int i = 0; i < len; i++)
		s1 = '0' + s1;
	int k = 0;
	for (int i = s1.size() - 1; i >= 0; i--)
		if (s1[i] + s2[i] - 2 * '0' + k < 10) {
			s1[i] = s1[i] + s2[i] - '0' + k;
			k = 0;
		}
		else {
			s1[i] = s1[i] + s2[i] - '0' + k - 10;
			k = 1;
		}
	if (k)s1 = '1' + s1;
	return s1;
}
int main() {
	string s[3];
	while (cin >> s[0] >> s[1] >> s[2]) {
		int i = 0;
		for (; i < 97; i++)
			s[i % 3] = jia(s[i % 3], jia(s[(i + 1) % 3], s[(i + 2) % 3]));
		cout << s[--i % 3] << endl;
	}
}

Double click to view unformatted code.


Back to problem 3497