题目链接:

acm.hdu.edu.cn/showproblem.php?pid=1165

Eddy's research II

Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 5656    Accepted Submission(s): 2045

Problem Description
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:

Now Eddy Gives you two numbers: m and n, your task is to compute the value of A(m,n) .This is so easy problem,If you slove this problem,you will receive a prize(Eddy will invite you to hdu restaurant to have supper).

 
Input
Each line of the input will have 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
 
Author
eddy
 分析:
开始是想用备忘录加递归来做的,定义一个f[][]的二维数组,初始化全部为-1,每次计算之前看看f[m][n]的值,如果不是-1,则表示A(m,n)还没有计算过,递归计算,然后将得到的值存起来(备忘录法),如果值不等于-1,说明A(m,n)计算过了,直接拿来用即可,这样可以解决大量重复的子问题
但是,这样做会超时。。。。。。
所以第二种做法,公式推导
因为m只有4个值,那么我们想想是不是对每个不同的m,都有一个公式与之对应呢?
开始推导
当m=0的时候, 代入题目给的递归公式可知A(0,n)=n+1
当m=1的时候, A(1,n)=A(0,A(1,n-1)) =A(1,n-1)+1.........(n个1累加)直到n=1的时候,A(0,1)=2,所以A(1,n)=n+2
当m=2的时候, A(2,n)=A(1,A(2,n-1))=A(2,n-1)+2.........(n个2的累加)直到n=1的时候,A(1,1)=3,所以A(2,n)=2*n+3
当m=3的时候, A(3,n)=A(2,A(3,n-1))=2*A(3,n-1)+3........(2的n次方个5相乘,2的n次方减一个3相乘,二者相加)直到n=1的时候,A(2,1)=5,所以A(3,n)=2的n+3次方-3
 
我觉得我可能没有说清楚,但是我自己懂了,我真的很努力去说清楚了,唉,自己表达能力有限,大家自己推导一下肯定是可以推导出来的(前前后后推导了一个多小时)
代码如下:
#include<bits/stdc++.h>
using namespace std;
int f(int n)
{
int s=1;
for(int i=1;i<=n;i++)
{
s=s*2;
}
return s;
}
int solved(int m,int n)
{
if(m==0)
{
return n+1;
}else if(m==1)
{
return n+2;
}else if(m==2)
{
return 2*n+3;
}else if(m==3)
{
return f(n+3)-3;
}
}
int main()
{
int n,m;
while(~scanf("%d %d",&m,&n))
{
printf("%d\n",solved(m,n));
}
return 0;
}

  

HDU 1165 公式推导题的更多相关文章

  1. HDU-1042-N!(Java大法好 &amp;&amp; HDU大数水题)

    N! Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total Subm ...

  2. HDU 自动刷题机 Auto AC (轻轻松松进入HDU首页)

    前言: 在写这篇文章之前,首先感谢给我思路以及帮助过我的学长们 以下4篇博客都是学长原创,其中有很多有用的,值得学习的东西,希望能够帮到大家! 1.手把手教你用C++ 写ACM自动刷题神器(冲入HDU ...

  3. hdu 5326(基础题) work

    http://acm.hdu.edu.cn/showproblem.php?pid=5326 一道水题,题目大意是在公司里,给出n个员工和目标人数m,然后下面的n-1行是表示员工a管理b,问在这些员工 ...

  4. 【转载】 HDU 动态规划46题【只提供思路与状态转移方程】

    1.Robberies 连接 :http://acm.hdu.edu.cn/showproblem.php?pid=2955      背包;第一次做的时候把概率当做背包(放大100000倍化为整数) ...

  5. hdu 5162(水题)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5162 题解:看了半天以为测试用例写错了.这题玩文字游戏.它问的是当前第i名是原数组中的第几个. #i ...

  6. hdu 4908(思路题)

    BestCoder Sequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  7. hdu 1165 Eddy&#39;s research II(数学题,递推)

    // Eddy 继续 Problem Description As is known, Ackermann function plays an important role in the sphere ...

  8. 2015ICPC chanchun HDU 5534 (树形题转换完全背包)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=5534 题意:给你n个点,让你加上n-1条边使他变成一棵树,题目首先给你a[1] a[2].....a[n- ...

  9. HDU 5391 水题。

    E - 5 Time Limit:1500MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Submit Statu ...

随机推荐

  1. LocalStorage和sessionStorage之间的区别

    众所周知,自从HTML 5 标准出现之后,本地化存储一度成为热搜的关键词.在HTML 5 最开始时,本地存储有两种方式:一种是web Storage,另一种是web SQL.由于web SQL的实现是 ...

  2. Windows 环境下 NodeJs 开发 Log

    安装 NodeJs, npm. 环境变量配置. 1, Grunt 安装 :  npm install -g grunt-clinpm install -g grunt package.json { & ...

  3. Bzoj4766: 文艺计算姬(Matrix-tree/prufer)

    BZOJ 答案就是 \(n^{m-1}m^{n-1}\) \(prufer\) 证明: \(n\) 中的数字出现 \(m-1\) 次,\(m\) 中出现 \(n-1\) 次,根据 \(prufer\) ...

  4. 搞懂WebSocket原理

    一.websocket与http WebSocket是HTML5出的东西(协议),也就是说HTTP协议没有变化,或者说没关系,但HTTP是不支持持久连接的(长连接,循环连接的不算) 首先HTTP有 1 ...

  5. html5 文档元素 header footer h1h2h4

    文档元素: 用于在页面的大布局, 区分各个主体和概念. 让整体清晰, 元素有语义, 进一步代替div 具体划分图示: (参考) <hgroup> <section> <n ...

  6. react父子组件各自生命周期函数加载的先后顺序

    理解记忆总结: 父组件即将挂载(最外层的父组件都还没准备进入,其内部的子组件当然更没进入了) -> 子组件即将挂载  -> 子组件挂载完成(父内部都没完成,父当然不能算完成)  -> ...

  7. react生命周期es6

    基本函数有 import React from 'react' export default class MyClass extends React.Component { constructor(p ...

  8. MongoDB 投影

    mongodb 投影意思是只选择必要的数据而不是选择一个文件的数据的整个.例如一个文档有5个字段,只需要显示其中3个 find() 方法 在MongoDB中,当执行find()方法,那么它会显示一个文 ...

  9. 131.007 Unsupervised Learning - Feature Selection | 非监督学习 - 特征选择

    1 Why? Reason1 Knowledge Discovery (about human beings limitaitons) Reason2 Cause of Dimensionality ...

  10. LoadRunner对移动互联网后端服务器压力测试

    一.LoadRunner简介 LoadRunner,是惠普公司研发的一款预测系统行为和性能的负载测试工具.通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner能够 ...