文章标题
来源:互联网 发布:网络销售入门 编辑:程序博客网 时间:2024/06/05 01:02
Fibonacci数列是这样定义的:
F[0] = 0
F[1] = 1
for each i ≥ 2: F[i] = F[i-1] + F[i-2]
因此,Fibonacci数列就形如:0, 1, 1, 2, 3, 5, 8, 13, …,在Fibonacci数列中的数我们称为Fibonacci数。给你一个N,你想让其变为一个Fibonacci数,每一步你可以把当前数字X变为X-1或者X+1,现在给你一个数N求最少需要多少步可以变为Fibonacci数。
输入描述:
输入为一个正整数N(1 ≤ N ≤ 1,000,000)
输出描述:
输出一个最小的步数变为Fibonacci数
示例1
输入
15
输出
2
#include <stdio.h>#include <math.h>#include <stdlib.h>int main(){ long a = 0, b = 1, c, n, step; scanf_s("%ld", &n); while (1){ c = a; a = b + a; if (abs(a - n) <= c) { step = abs(a - n); break; } c = b; b = a + b; if (abs(b - n) <= c) { step = abs(b - n); break; } } printf("%d", step); system("pause");}
您的代码已保存
答案错误:您提交的程序没有通过所有的测试用例
case通过率为70.00%
测试用例:
3417
对应输出应该为:
764
你的输出为:
833
#include <stdio.h>#include <stdlib.h>int main(){ long n; scanf("%ld", &n); int a = 1, b = 1, tag = 0, cc = 0, cc_last = 0, step; if (abs(a - n) <= b) step = abs(a - n); else if (abs(a + b - n) <= b) step = abs(a + b - n); else{ a = a + b; cc_last = cc; cc = abs(a - n); while (1){ b = a + b; cc_last = cc; cc = abs(b - n); if (cc_last <= cc) { step = cc_last; break; } a = a + b; cc_last = cc; cc = abs(a - n); if (cc_last <= cc) { step = cc_last; break; } } } printf("%d", step); system("pause");}
您的代码已保存
答案正确:恭喜!您提交的程序通过了所有的测试用例
先码再研究
链接:
https://www.nowcoder.com/questionTerminal/18ecd0ecf5ef4fe9ba3f17f8d00d2d66
来源:牛客网
阅读全文
0 0
- 文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题 文章标题 文章标题 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 条件结构之switch语句
- Cortex-M3异常中断及向量表定义
- Linux 安装常见问题
- javascript高级程序设计 读书笔记(一)
- 使用windows server 2008自带备份工具备份失败注意事项
- 文章标题
- Hibernate入门(一)之基本配置
- 编写函数,输出大于a小于b的所有偶数,主函数读入两个正整数
- 'You are trying to run the Python 2 version of Beautiful Soup under Python 3. This will not work.'<>
- 自顶向下 逐步求精
- django 分页功能
- Hadoop/MapReduce 查找、统计和列出大图中的所有三角形
- 数的高度(java)
- 11-24 & 11-25 省选集训总结/题解