View Code of Problem 3497

#include <iostream>
#include <cstdio>
#include <string>
using namespace std;
string add(string a,string b){
	if(a.size()>b.size()){
		for(int i=0;i<a.size()-b.size();i++){
			b = '0' + b;
		}
	}
	else if(a.size()<b.size()){
		for(int i=0;i<b.size()-a.size();i++){
			a = '0' + a;
		}
	}
	int carry = 0;
	for(int i=a.size()-1;i>=0;i--){
		int current = carry + a[i] -'0' + b[i]  -'0';
		a[i] = current % 10 + '0';
		carry = current / 10;
	}
	if(carry != 0){
		a = '1' + a;
	}
	return a;
}
int main(){
//	string a,b,c;
//	while(cin>>a>>b>>c){
//		for(int i=0;i<97;i++){
//			string s = add(add(a,b),c); 
//			a = b;
//			b = c;
//			c = s;
//		}
//		cout<<c<<endl;
//	}
	string a[100];
		
		while (cin >> a[0] >> a[1] >> a[2])
		{
			for (int i = 3;i <= 99;i++)
			{
				a[i] = add(add(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