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]) {
		for (int i = 0; i < 97; i++) {
			s[i % 3] = jia(s[i % 3], jia(s[(i + 1) % 3], s[(i + 2) % 3]));
			if (i == 96) {
				cout << s[i % 3] << endl;
				break;
			}
		}	
	}
}

Double click to view unformatted code.


Back to problem 3497