九度 1389

来源:互联网 发布:0809赛季的韦德数据 编辑:程序博客网 时间:2024/06/10 20:36

这是一个变形题;

设f[n]为跳到n阶台阶的方法,另f[0] = 1;

当n = 1时,f[n] = f[1] = f[0] = 1;

当n = 2时,f[n] = f[2] = f[0] + f[1] = 2;

当n = 3时,f[n] = f[3] = f[0] + f[1] + f[2] = 4;

······························

当n = k时,f[n] = f[k] = f[k-1] + f[k-2] + ·················f[1] + f[0];

因此f[n] = f[n-1] + f[n-2] +····················f[0]-------------------(1)

而f[n-1] = f[n-2] + f[n-3] + ····················f[0]------------------(2)

(1)式减去(2)式:

f[n] = f[n-1] + f[n-1] = 2 * f[n-1] = 2 * 2  * f[n-2] = 2 * 2 * 2 * f[n-3] =·····2^(n-1) * f[1],而f[1] = 1;

因此:f[n] = 2^(n-1) = (1LL << (n-1));

注意:只能用long long 类型,_in64d,不行!输出用"%lld"!

故有下面两个代码:

代码一:

#include <iostream>#include <cstring>#include <cstdio>using namespace std;const int MAXN = 55;long long f[MAXN];void Pre_Slove(){    int i;    memset(f, 0, sizeof(f));    f[0] = 1;    f[1] = 1;    for (i = 2; i <= 55; ++i)        f[i] = 2 * f[i-1];}int main(){int n;Pre_Slove();while (~scanf("%d", &n)){printf("%lld\n", f[n]);}return 0;}


代码二:

#include <stdio.h>int main(){int n;while (scanf("%d", &n) != EOF){    printf("%lld\n", 1LL << (n-1));}return 0;}


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 不知道怀孕喝酒了怎么办 不知道怀孕了喝酒了怎么办 怀孕5天喝酒了怎么办 打孩子耳光后脸肿了怎么办 老师说上课不专心怎么办 孩子不专心好动马虎怎么办 学生上课不认真听讲怎么办 一年级孩子上课不注意听讲怎么办 一年级孩子上课说话不听课怎么办 一年级孩子上课不听课怎么办 小学一年级学生上课不专心怎么办? 小孩听课注意力不集中怎么办 小孩子上课精神不集中怎么办 孩子说我不画了怎么办 幼儿园小朋友上课不专心怎么办 孩子写作业不专心怎么办 小孩做作业不专心怎么办 孩子上课精力不集中怎么办 四岁宝宝吃饭慢怎么办 5岁宝宝吃饭慢怎么办 小学一年级上课不专心怎么办 5岁儿童不专心怎么办 小孩子做作业不专心怎么办 孩子做作业不专心怎么办 小孩学了就忘怎么办 小孩学过就忘了怎么办 做事老是注意力不集中怎么办 做事无法专注注意力不集中怎么办 幼儿园孩子上课不认真听讲怎么办 孩子在课间打闹家长应该怎么办 孩子打闹家长额钱怎么办 我又打孩子了怎么办 打排卵针不排卵怎么办 总是控制不住打骂孩子怎么办 叛逆期的孩子打骂妈妈怎么办 孩子屁股打青了怎么办 父亲把孩子屁股打流血怎么办 孩子屁股长了湿疹怎么办 宝宝发脾气摔东西躺地上怎么办 生气拿棍子打了孩子怎么办 小宝宝被蚊虫咬了怎么办