#include <iostream>
using namespace std;
int f(long long int), g(long long int);
int f(long long int a)
{
if (a==0)
return 1;
else
return f(a-1)+g(a-1);
}
int g(long long int b)
{if (b==0)
return 0;
else
return (2*f(b-1))+g(b-1);
}
int main ()
{
long long int a;
while (cin>>a)
{
cout<<f(a)+g(a)<<endl;
}
return 0;
}
N = 50 時,方法數高達
16616132878186749607
而 signed long long int 正數最大只能容納到 (2 ^ 63) - 1 ,也就是
9223372036854775807
NA 的結果大概就是肇因於溢位的問題,試試看改成 unsigned long long int 吧。
以上。