计算斐波那契数最小差值
给定一个正整数n,计算n与斐波那契数的最小差值(绝对值)
说明:
斐波那契数定义:
从0,1开始后面的数值为前面两者之和, 即第三个数为第一和第二个数之和
形如:0,1,1,2,3,5,8,13,21。。。。 其中3为1与2的和,5为2与3的和,8为3与5的和等等
要计算的数值案例:
输入15,与斐波那契数相减,与13相减的绝对值是2,与21相减的绝对值是6,与众多斐波那契数相减的最小差值为2
因此输入15,输出2
输入描述:
输入任意正整数
输出描述:
数组正整数
输入例子1:
15
输出例子1:
2
例子说明1:
15与“0,1,1,2,3,5,8,13,21。。。。”当中的13差值的绝对值最小,与21的差值为6,与8的差值为7
1 #include <iostream> 2 #include <vector> 3 #include <algorithm> 4 using namespace std; 5 6 int main(){ 7 vector<int>v; 8 v.push_back(0); 9 v.push_back(1); 10 int n,i=2; 11 cin>>n; 12 while(1){ 13 v.push_back(v[i-1]+v[i-2]); 14 if(v[i]>=n) 15 break; 16 i++; 17 } 18 if(v[i]==n||n==0) 19 cout<<'0'; 20 else if(v[i]>n){ 21 cout<< min(abs(v[i]-n),abs(v[i-1]-n)); 22 } 23 return 0; 24 }
作者:PennyXia
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。