问题标题: 酷町堂:6645

0
0
已解决
胡景波
胡景波
中级光能
中级光能
  • 题目描述 Description

    现给出一个整数 n(n>=0),求出下式结果,保留两位小数输出:
    image.png

    输入描述 Input Description

    输入一个数:n (n>=0)

    输出描述 Output Description

    输出运行结果:Fn

    样例输入 Sample Input

    5

    样例输出 Sample Output

    8.00

    数据范围及提示 Data Size & Hint

    数据范围:
    0<= n <=48

  • #include<iostream>
  • #include<cmath>
  • #include<cstdio>
  • using namespace std;
  • int n;
  • double p(double x,int t){
    • double ff=x;
    • for(int i=1;i<=t;i++){
      • ff=x*ff;
    • }
    • return ff;
  • }
  • int main(){
    • cin>>n;
    • double p1=(1+sqrt(5))*1.0/2,p2=(1-sqrt(5))*1.0/2;
    • printf("%.2f",(p(p1,n)-p(p2,n))*1.0/sqrt(5));
    • return 0;
  • }

0
已采纳
李博然
李博然
资深守护
资深守护

别看这题算试很复杂,但其实就是”肥不拉几数列“,

状态转移方程 f[i]=f[i-1]+f[i-2];

边界 f[0]=0,f[1]=1;

目标 f[n]

注意用long long 定义f数组,否则会越界

注意输出四舍五入(其实就是在f[n]后面输出.00就行了)

望采纳

0
0
0
我要回答