描述
计算Ackermann函数值?天方夜谭吧?
不错,Ackermann函数是增长速度极快的递归函数,要计算其函数值当然是相当困难的。
Ackermann函数定义如下:
本题中我们只需要计算当m=3时Ackermann函数的值
输入
输入包含多组测试数据,每组测试数据占一行,为一个64位整数n
输出
对每组输入的n,请输出Ackermann函数当m=3时的值,也就是A(3,n)。最后结果对9223372036854775807取余。
样例输入
5 10 100样例输出
253 8189 1099511627773题目来源
ben
解题思路:找规律~
AC代码:
#include<stdio.h> int main() { __int64 n,a[64],i; a[1]=13; a[2]=29; a[61]=9223372036854775806; a[62]=1; a[63]=5; for(i=3;i<61;i++) a[i]=a[i-1]*2+3; while(scanf("%I64d",&n)!=EOF) { n%=63; if(n==0) printf("%I64d\n",a[63]); else printf("%I64d\n",a[n]); } return 0; }