bjfu1025 Ackermann函数

本文介绍了一种计算Ackermann函数的方法,特别关注于当m=3时的函数值,并提供了一个有效的算法实现。通过找到特定模式,可以高效地计算出结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Ackermann函数

时间限制(C/C++):1000MS/3000MS          运行内存限制:65536KByte
总提交: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; 
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值