Ackermann函数
时间限制(C/C++):1000MS/3000MS 运行内存限制:65536KByte
总提交:277 测试通过:79
总提交:277 测试通过:79
描述
计算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;
}