原题地址:月落乌啼算钱(斐波那契数列) - 洛谷
题目背景
(本道题目木有隐藏歌曲……不用猜了……)
《爱与愁的故事第一弹·heartache》最终章。
吃完 pizza,月落乌啼知道超出自己的预算了。为了不在爱与愁大神面前献丑,只好还是硬着头皮去算钱……
题目描述
算完钱后,月落乌啼想着:“你坑我!”于是当爱与愁大神问多少钱时,月落乌啼说了一堆乱码。爱与愁大神说:“算了算了,我只问第 n 样菜价格多少?”月落乌啼写出了:
由于爱与愁大神学过编程,于是就用 11 分钟的时间求出了 Fn 的结果。月落乌啼为此大吃一惊。你能学学爱与愁大神求出 Fn 的值吗?
输入格式
一行一个自然数 n。
输出格式
只有 1 行一个实数 Fn,保留两位小数。
输入输出样例
输入 #1复制
6输出 #1复制
8.00说明/提示
对于所有数据:0≤n≤48。
这道题踩了几个坑:
第一是这么复杂的式子没想着先试几个数就直接想看题解了(离散数学学的也不是很好);
第二是n=0没有特判(又是眼睛不好);
第三是特判后没有直接结束程序,导致特判情况下程序也进入循环,多输出一行;
第四是低估了斐波那契数列输出结果的数据长度。
下面是AC代码
#include <iostream>
using namespace std;
int main()
{
long long int num[50];
num[0]=0;
num[1]=1;
num[2]=1;
int n;
cin>>n;
for(int i=3;i<=n;i++)
{
num[i]=num[i-1]+num[i-2];
}
cout<<num[n]<<".00"<<endl;
}
我自己写的代码是n=0,1,2时特判,看了别人题解后觉得这个做法代码更美观些。