这题主要是要推出公式,借鉴了一下别人的想法:
m=0时 A(m,n)=n+1;
m=1时 A(m,n)=A(0,A(1,n-1))=A(1,n-1)+1=A(1,n-2)+1+1=……=n+2;
m=2时 A(m,n)=n*2+3
m=3时 A(m,n)=A(2,A(m,n-1))=A(m,n-1)*2+3
#include <cstdio>
#include <cstring>
#include <iostream>
#include <queue>
#include <algorithm>
#include <map>
#include <vector>
#include <stack>
using namespace std;
#define M 1000005
#define ll long long
#define int64 __int64
int m , n , dp[4][M];
void Init()
{
int i , MAX = 1000000;
for (i = 0 ; i <= MAX ; i++)
{
dp[0][i] = i+1;
dp[1][i] = i+2;
dp[2][i] = 2*i+3;
}
dp[3][0] = 5;
for (i = 1 ; i <= 24 ; i++)dp[3][i] = 2*dp[3][i-1]+3;
}
int main()
{
Init();
while (~scanf("%d%d",&m,&n))
{
printf("%d\n",dp[m][n]);
}
return 0;
}