FZU 1042 Ackermann Function
2009-07-29 11:17
169 查看
Ackermann Function
解题:
要推到公式,在m取值比较小的前提下,比较好推倒公式:
m=1,n=0--->2
m=1,n=1--->3
m=1,n=2--->4
m=1,n=3--->5
m=1------->2+n
m=2,n=0--->3
m=2,n=1--->5
m=2,n=2--->7
m=2,n=3--->9
m=2------->2*n+3
m=3则可以转变。
Time Limit:1s | Memory limit:32M |
Accepted Submit:332 | Total Submit:931 |
As is known, Ackermann function plays an important role in the sphere of theoretical computer science. However, in the other hand, the dramatic fast increasing pace of the function caused the value of Ackermann function hard to calcuate. Ackermann function can be defined recursively as follows: Given m and n, your task is to compute the value of A(m,n) Input Each line of the input will have a two integers, namely m, n, where 0 < m <= 3. Note that when m<3, n can be any integer less than 1000000, while m=3, the value of n is restricted within 24. Input is terminated by end of file. Output For each value of m,n, print out the value of A(m,n). Sample Input 1 3 2 4 Sample Output 5 11 Original: chenyan |
要推到公式,在m取值比较小的前提下,比较好推倒公式:
m=1,n=0--->2
m=1,n=1--->3
m=1,n=2--->4
m=1,n=3--->5
m=1------->2+n
m=2,n=0--->3
m=2,n=1--->5
m=2,n=2--->7
m=2,n=3--->9
m=2------->2*n+3
m=3则可以转变。
#include <iostream> using namespace std; int Ackermann(int m,int n) { if (m==1) { return 2+n; } else if (m==2) { return 3+2*n; } else if (m==3) { if(n>0) return Ackermann(2,Ackermann(m,n-1)); else if (n==0) { return Ackermann(2,1); } } return 0; } int main() { int m,n; while (cin>>m>>n) { cout<<Ackermann(m,n)<<endl; } return 0; }
相关文章推荐
- HDOJ 1042 N!(大数)
- 1042. 字符统计(20)
- hihocoder #1042 跑马圈地
- bzoj1042: [HAOI2008]硬币购物(Dp+容斥原理)
- FZU 2082 过路费(树链剖分,边权)
- fzu 2238 Daxia & Wzc's problem
- NPU 17届程序设计作业6 之电子老鼠 1042
- fzu 2195 检查站点
- FZU - 2082:过路费(树链剖分)
- 1042字符统计 大小写转换 s[i]-0 是转换 tolower toupper
- 1042. 字符统计(20)--Python
- HDOJ1002 HOOJ1042大数基本题 C/C++
- 1042. 字符统计(20)
- FZU 2122
- ●BZOJ 1042 [HAOI2008]硬币购物
- FZU - 2191 完美的数字
- 牧场物语 FZU - 2234 (双线DP)
- FZU - 2150 Fire Game
- pat乙级1042
- HDU-1042 大数的阶乘(万进制)