P1720 月落乌啼算钱(斐波那契数列) 题解

 

这是本蒟蒻的第2篇题解......(不喜勿喷

题目背景

题目描述

P1720 

     算完钱后,月落乌啼想着:“你 TMD 坑我,(以下用闽南语读)归粒靠杯靠亩诶,(以下用英读)是伊特游!”于是当爱与愁大神问多少钱时,月落乌啼说了一堆乱码。爱与愁大神说:“算了算了,我只问第 n 样菜价格多少?”月落乌啼写出了:

        ·        Fn=((1+√5)/2)^n-((1-√5)/2)^n  /  √5

由于爱与愁大神学过编程,于是就用 11 分钟的时间求出了 F_nFn​ 的结果。月落乌啼为此大吃一惊。你能学学爱与愁大神求出Fn​ 的值吗?

输入格式

一行一个自然数 nn。

输出格式

只有 11 行一个实数 F_nFn​,保留两位小数。

输入输出样例

输入 #1

6

输出 #1

8.00

说明/提示

对于所有数据:0<=n<=48

本题有两种做法:

1.硬算

  直接将公式带入即可。

2.根据斐波那契数列的特性进行编程

斐波那契数列:1,1,2,3,5,8......

不难发现,斐波那契数列中,F(n)=F(n-1)+F(n-2)

之所以,又有了两种方法:

1.因为n的范围较小,所以打表

2.先推出前两项,再根据规律求出第n项

下面,献上代码:

1.硬算

#include<bits/stdc++.h>
using namespace std;
int main(){
	int n;
	cin>>n;
	double a=(1+sqrt(5))/2.0;
	double s1=1;
	for (int i=0;i<n;i++){
		s1*=a;
	}
	double b=(1-sqrt(5))/2.0;
	double s2=1;
	for (int i=0;i<n;i++){
		s2*=b;
	}
	double ss=(s1-s2)/sqrt(5);
	printf("%.2lf",ss);
	return 0;
} 

2.根据....

1.打表

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n;cin>>n;
    double ans[50]={
0.00,1.00,1.00,2.00,3.00,5.00,8.00,13.00,21.00,
34.00,55.00,89.00,144.00,233.00,377.00,610.00,987.00,
1597.00,2584.00,4181.00,6765.00,10946.00,17711.00,28657.00,46368.00,
75025.00,121393.00,196418.00,317811.00,514229.00,832040.00,1346269.00,2178309.00,
3524578.00,5702887.00,9227465.00,14930352.00,24157817.00,39088169.00,63245986.00,102334155.00,
165580141.00,267914296.00,433494437.00,701408733.00,1134903170.00,1836311903.00,2971215073.00,4807526976.00,0
};
	
	cout<<ans[n-1];
	return 0;
}

2.

#include<iostream>
using namespace std;
long long a=1,b=1,c=0;
int n,i;
int main()
{
    cin>>n;
    for (i=3;i<=n;i++)
    {
        c=a+b;
        a=b;
        b=c;
    }
    cout<<c<<".00";
    return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值