题目链接: Fibonacci数列
第一种做法:
就是求fibonacci和查找
lower_bound与upper_bound的用法
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int maxn = 36;
int num[maxn];
int fib(int i);
int main()
{
memset(num,0,sizeof(num));
fib(35);
int n;
while(cin>>n)
{
int ans;
int *a;
a=lower_bound(num,num+36,n);
ans=(*a)-n<(n-*(a-1))?(*a)-n : (n-*(a-1));
cout<<ans<<endl;
}
return 0;
}
int fib(int i)
{
if(num[i]==0)
{
if(i==1 || i==2)
{
num[i]=1;
return 1;
}else
{
num[i-1]=fib(i-1);
num[i-2]=fib(i-2);
return num[i]=num[i-1]+num[i-2];
}
}
else return num[i];
}