View Code of Problem 3497

#include<iostream>
#include<string>
#include<cstring>
#include<vector>
#include<iomanip>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std;
string cal(string a, string b)
{
	
	int len1 = a.size();
	int len2 = b.size();
	int carry = 0;
	if (len1 < len2)
	{
		string ss(len2 - len1, '0');
		a = ss + a;
	}
	else if (len1 > len2)
	{
		string ss(len1 - len2, '0');
		b = ss + b;
	}
	string s = a;
	for (int i = a.length() - 1;i >= 0;i--)
	{
		s[i] = (a[i] - '0' + b[i] - '0' + carry) % 10+'0';
		carry= (a[i] - '0' + b[i] - '0' + carry) / 10;
	}
	if (carry != 0)
		s = '1' + s;
	return s;
}
int main()
{
	string a[100];
	
	while (cin >> a[0] >> a[1] >> a[2])
	{
		for (int i = 3;i <= 99;i++)
		{
			a[i] = cal(cal(a[i - 1], a[i - 2]), a[i - 3]);
		}
		cout << a[99] << endl;
	}
	
	return 0;
}

Double click to view unformatted code.


Back to problem 3497