HDU5620 KK's Steel(C++语言版)
来源:互联网 发布:手机 拔号软件 编辑:程序博客网 时间:2024/05/16 07:02
问题链接:HDU5620 KK's Steel。
问题描述:参见上文。
问题分析:刚读到题,有点难解,没有头绪。
看了暗示才明白点,有点像菲波拉契数列,不过每一项求的是数列到该项之和。另外略有不同的是,第1项是1,第2项是2。也许是为了三个钢管围起来不能成为三角形的原因。
既然知道以上这些,那就先打表备查,这是为了节省计算时间,尽管有时候是多余的,但是多数程序都需要打表,那就打表吧。
这个C++版的采用顺序查找,逻辑就要简单一些。参见:HDU5620 KK's Steel(C语言版)。
需要说明的一点是,菲波拉契序列的各项值增长是极快的,其和的增长就更快了,不用95项就达到了所需要的值的范围。这个项数计算,作为定义数组大小的依据,不能随便来的,需要事先做点功课的。
程序说明:(略)。
AC的C++语言程序如下:/* HDU5620 KK's Steel */#include <iostream>using namespace std;const int MAXN = 100;unsigned long long fsum[MAXN];/* 递推法:计算斐波拉契数列的第1到n项之和 *//* 这里略有不同,第2项是2,其他基本相同 */void fibsum(unsigned long long fsum[], int n){ fsum[0] = 0; fsum[1] = 1; fsum[2] = 3; if(n <= 2) return; unsigned long long f1 = 1, f2 = 2, temp; int i; for(i=3; i<n; i++) { temp = f1 + f2; f1 = f2; f2 = temp; fsum[i] = fsum[i-1] + temp; }}int main(){ // 计算斐波拉契数列的第1到n项之和,打表 fibsum(fsum, MAXN); int t; long long n; cin >> t; while(t--) { cin >> n; for(int i=1; i<MAXN; i++) if(n < fsum[i]) { cout << i-1 << endl; break; } } return 0;}
1 0
- HDU5620 KK's Steel(C语言版)
- HDU5620 KK's Steel(C++语言版)
- HDU 5620 KK's Steel(水~)
- HDU 5620 KK's Steel
- HDU 5620 KK's Steel
- hdoj-5620-KK's Steel
- HDU 5620 KK's Steel(简单的推理题)
- 【杭电oj】5620 - KK's Steel(递推)
- HDU 5620 KK's Steel(思维题)
- hdoj 5620 KK's Steel 【数学】
- hdoj KK's Steel 5620 (打表)
- 杭电5620 KK's Steel
- HDU 5620 KK's Steel <贪心思维>
- hdoj--5620--KK's Steel(斐波那契数)
- HDU 5620 KK's Steel(斐波那契数列的巧妙应用)
- KK's Steel bestcoder round 71 hdu 5620(裴波那契)
- HDU 5620 KK's Steel(找规律,斐波那契数列的应用)
- hd 5620 KK's Steel(斐波那契数列)
- 1. Two Sum
- 苹果加急信
- MySQL存储引擎中的MyISAM和InnoDB区别详解
- TabBar高度修改以及UITabBarItem坐标移动
- Android-AS开源好的项目引用-个人心得
- HDU5620 KK's Steel(C++语言版)
- 【回文子串的个数】HDU1544Palindromes【字符缩距/奇偶判断】
- Lucene5.5对索引进行搜索
- 百度地图API
- Linux内核中的PID散列表实例
- Win32 常用数据类型
- sar命令
- 机器学习资源
- Qt 编译时遇到 error: [debug/qrc_music.cpp] Error 1