10313

#include <iostream>
#include <string>
#include <sstream>

#define ll long long

using namespace std;

ll ways[400][400];

ll findways(int a,int b)
{
	ll r=0;
	if(ways[a][b]!=-1)
	return ways[a][b];
	if(a==0)
	return 1;
	else
	{	r = 0;
		for(int i=b;i>=1;i--)
			if(a-i>=0)
			{
				r+=findways(a-i,i);
				//ways[a-i][i]=r;
			}
			ways[a][b]=r;
	}
	return r;
}

int main()
{
	int a[3],b,c,n;
	string s;
	stringstream ss;
	for(int i=0;i<400;i++)
		for(int j=0;j<400;j++)
			ways[i][j]=-1;
	while(getline(cin,s))
	{
		int k=0;
		//getline(cin,s);
		ss.clear();
		ss<<s;
		while(ss>>n)
		{
			if(n>300)
			n=300;
			a[k++]=n;
		}
		if(k==1)
		{
			cout<<findways(a[0],a[0])<<"\n";
		}
		if(k==2)
		{
			cout<<findways(a[0],a[1])<<"\n";
		}
		else if(k==3)
		{
			cout<<findways(a[0],a[2])-findways(a[0],a[1]-1)<<"\n";
		}
	}

	return 0;
}

 

Leave a Reply

Your email address will not be published. Required fields are marked *