题意:给你n,m,求出A(n,m)的值。
思路:打表咯。然后找出规律。
n=0,A(n,m)=m+1
n=1,A(n,m)=m+2
n=2,A(n,m)=2m+3
n=3,A(n,m)=5+8∗2m−1
http://acm.hdu.edu.cn/showproblem.php?pid=1165
/*********************************************
Problem : HDU 1165
Author : NMfloat
InkTime (c) NM . All Rights Reserved .
********************************************/
using namespace std;
const int MOD = 1e9+7;
const int INF = 0x3f3f3f3f;
const int MAXN = 1e5+5;
const int MAXE = 2e5+5;
typedef long long LL;
typedef unsigned long long ULL;
int T,n,m,k;
// int A[4][4000001];
// void init() {
// rep(i,0,3) {
// rep(j,0,4000000) {
// if(i == 0) A[i][j] = j + 1;
// else if(j == 0) A[i][j] = A[i-1][1];
// else if(i == 3 && j > 24) break;
// else A[i][j] = A[i-1][A[i][j-1]];
// //if(j < 10) printf("i : %d j : %d A[i][j] : %d\n",i,j,A[i][j]);
// }
// //puts("");
// }
// }
void input() {
}
void solve() {
LL ans ;
if(n == 0) ans = m + 1;
else if(n == 1) ans = m + 2;
else if(n == 2) ans = m * 2 + 3;
else if(m == 0) ans = 3 ;
else ans = (LL)5 + (LL)8 * (((LL)1<<(m))-1);
printf("%I64d\n",ans);
}
int main(void) {
//freopen("a.in","r",stdin);
//scanf("%d",&T); while(T--) {
//init();
while(~scanf("%d %d",&n,&m)) {
//while(scanf("%d",&n),n) {
input();
solve();
}
return 0;
}