NC206649. 斐波那契数列?
描述
输入描述
一个正整数n()。
输出描述
一个浮点数,表示答案。你的误差的绝对值与答案不能相差超过。
示例1
输入:
2
输出:
0.75
说明:
C++14(g++5.4) 解法, 执行用时: 18ms, 内存消耗: 600K, 提交时间: 2020-05-30 18:19:06
#include<bits/stdc++.h> using namespace std; int main(){ int n; cin>>n; double a[160]={0,1}; double ans=0,k=1; for(int i=1;i<=min(n,150);i++){ k=k*2; ans+=a[i]/k; a[i+1]=a[i]+a[i-1]; } printf("%.11f",ans); return 0; }
C++(clang++ 11.0.1) 解法, 执行用时: 4ms, 内存消耗: 440K, 提交时间: 2022-12-21 23:13:53
#include <bits/stdc++.h> #define g(n) (pow(0.5+sqrt(5)/2,n)-pow(0.5-sqrt(5)/2,n))/sqrt(5) using namespace std; int main(){ double n; cin>>n; printf("%.9lf\n",n>200?2:2-(1.5*g(n)+g(n-1))/pow(2,n-1)); return 0; }
Python3(3.5.2) 解法, 执行用时: 35ms, 内存消耗: 3424K, 提交时间: 2020-05-30 15:48:31
import math t=float(input()) a=(-(5+2*math.sqrt(5))/5)*math.pow((1+math.sqrt(5))/4,t)+((-5+2*math.sqrt(5))/5)*math.pow((1-math.sqrt(5))/4,t)+2 print(a)