九度 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
- 九度 1389
- 题目1389:变态跳台阶-九度
- 【九度OJ】:九度OJ 1050
- 【九度OJ】:九度OJ 1053
- 【九度OJ】:九度OJ 1056
- 【九度OJ】:九度OJ 1059
- 【九度OJ】:九度OJ 1206
- 人生九度
- 九度oj1181
- 九度oj1207
- 九度oj1182
- 九度o j1026
- 九度oj1186
- 九度oj1074
- 九度oj1127
- 九度oj1051
- 九度oj1197
- 九度oj1188
- 第二周作业---判断一个正整数是否为质数的算法
- HDOJ-1228-A+B
- google api 地图搜索应用
- TopCoder SRM 612 DIV1 900
- Linux常识:系统负载Load average
- 九度 1389
- 2520 我是菜鸟,我怕谁
- 《深入理解Android:Wi-Fi,NFC和GPS》章节连载[节选]--第七章 深入理解Wi-Fi P2P
- 常用排序算法总结
- HDU3292 No more tricks, Mr Nanguo滥竽充数 特殊不定方程 + 矩阵应用
- c笔试面试 之 不用除法操作实现两个正整数的除法
- Apache HTTP Server 与 Tomcat 的三种连接方式介绍
- QT入门-主窗口设置背景颜色和背景图片
- google map api