桐桐经常找一些很有趣的数学书来阅读以增长自己的数学知识。
一天,他偶然发现一个递归函数 w(a,b,c)有以下性质:
如果 a ≤ 0 或 b ≤ 0 或 c ≤ 0,就返回值 1;
如果 a > 20 或 b > 20 或 c > 20,就返回 w(20,20,20);
其它别的情况就返回 w(a-1,b,c)+ w(a-1,b-1,c)+ w(a-1,b,c-1)- w(a-1,b-1,c-1)。
桐桐想通过编程求出这个简单的递归函数的值,可是他在编程的时候遇到了一些困难。你能帮助他吗?
输入格式
一行,a,b,c 三个整数,-50 ≤ a,b,c ≤ 50。
输出格式
a,b,c 三个整数所对应的 w(a,b,c)函数的值。
输入/输出例子1
输入:
1 1 1
输出:
2
输入/输出例子2
输入:50 50 50
输出:1048576
样例解释
无
#include<bits/stdc++.h>
using namespace std;
long long k(long a,long b,long c)
{
if(a<=0||b<=0||c<=0) return 1;
if(a>20||b>20||c>20) return k(20,20,20);
return k(a-1,b,c)+ k(a-1,b-1,c)+ k(a-1,b,c-1)- k(a-1,b-1,c-1);
}
int main()
{
long long n,m,p;
cin>>n>>m>>p;
cout<<k(n,m,p);
return 0;
}