目录
题目描述
输入描述:
输入为一个正整数N(1 ≤ N ≤ 1,000,000)输出描述:
扫描二维码关注公众号,回复: 13800334 查看本文章输出一个最小的步数变为Fibonacci数"
示例1
输入
15输出
2
题目分析
首先我们要对Fibonacci数列非常了解,就是后一个数等于前两个数之和.
我们看的这道题,比如输入 n 为15
那么最少就是2步
就是用 a 和 b 来记录 n 左右两个数字,然后比较 n 与 a b 两数之差的绝对值,小的那个就是最后的答案
代码实现
#include <stdio.h> #include <math.h> int main() { int a = 0;//记录左值 int b = 1;//记录右值 int c = a + b; int n = 0; scanf("%d", &n); while (1) { if (b == n) { printf("0\n"); break; } else if (b > n) { if (abs(a - n) < abs(b - n))//abs函数是求一个数的绝对值 { printf("%d\n", abs(a - n)); } else { printf("%d\n", abs(b - n)); } break; } //求下一组Fibonacci数 a = b; b = c; c = a + b; } return 0; }