KS28. 计算斐波那契数最小差值
描述
输入描述
输入任意整数输出描述
一个整数示例1
输入:
15
输出:
2
说明:
15与“0,1,1,2,3,5,8,13,21。。。。”当中的13差值的绝对值最小,与21的差值为6,与8的差值为7示例2
输入:
1
输出:
0
说明:
斐波那契数列中存在 1 ,因此最小差值是 0C 解法, 执行用时: 2ms, 内存消耗: 292KB, 提交时间: 2021-09-17
#include <stdio.h> int main() { int n; int bigNum = 1; int smallNum = 0; int firstNum = 0; int secondeNum = 1; scanf("%d", &n); while(firstNum+secondeNum < n){ smallNum = firstNum + secondeNum; firstNum = secondeNum; secondeNum = smallNum; } bigNum = firstNum + secondeNum; if (n-smallNum > bigNum-n) { printf("%d", bigNum-n); } else { printf("%d", n-smallNum); } }
C 解法, 执行用时: 2ms, 内存消耗: 308KB, 提交时间: 2022-04-13
#include<stdio.h> int main() { int a=0; int b=1; int c=0; int n; scanf("%d",&n); while(1) { if(n==c) { printf("%d",0); break; } if(n<=b) { if(abs(a-n)<abs(b-n)) { printf("%d",abs(a-n)); break; } else { printf("%d",abs(b-n)); break; } } a=b; b=c; c=a+b; } return 0; }