题意:在斐波那契数列( 1 ,1,2,3,5 ...... )中,第一个有1000位数字的是第几项?

思路:****滚动数组 + 大数加法


/*************************************************************************
> File Name: euler025.c
> Author: WArobot
> Blog: http://www.cnblogs.com/WArobot/
> Created Time: 2017年06月25日 星期日 11时24分33秒
************************************************************************/ #include <stdio.h>
#include <inttypes.h> int32_t main() {
int32_t fib[3][1100] = {0}; // fib[][0] 记录该数组所代表数字的最大位数
fib[1][0] = fib[1][1] = 1;
fib[2][0] = fib[2][1] = 1;
int32_t number = 2 , idx1 , idx2 , idx3;
while( fib[ number % 3 ][0] < 1000 ) {
number++;
idx1 = (number - 2) % 3; // 依靠取模运算进行“滚动”,fib[idx1] < fib[idx2] < fib[idx3]
idx2 = (number - 1) % 3;
idx3 = number % 3;
for(int32_t i = 1 ; i <= fib[idx2][0] ; i++)
fib[idx3][i] = fib[idx2][i] + fib[idx1][i];
fib[idx3][0] = fib[idx2][0];
for(int32_t i = 1 ; i <= fib[idx3][0] ; i++) {
if( fib[idx3][i] >= 10 ){
fib[idx3][i+1] += fib[idx3][i] / 10;
fib[idx3][i] %= 10;
if( fib[idx3][0] < i + 1 ) fib[idx3][0] = i + 1;
}
}
}
printf("%d\n",number);
return 0;
}

最新文章

  1. IDEA UTF-8 中含 bom 运行报错 批量处理将bom移除
  2. word20161204
  3. mysql连接查询语句示例
  4. python3内置函数详解
  5. eclipse中改变默认的workspace的方法及说明
  6. 一排cell就第一个cell要点两次才响应,其他的cell都点一下就响应
  7. ACM题目————二叉树的遍历
  8. css -- 题目汇总
  9. HDU 5914 Triangle 【构造】 (2016中国大学生程序设计竞赛(长春))
  10. &gt;/dev/null 2&gt;&amp;1 这句话的含义
  11. WCF websocket
  12. Android ADT安装时卡在Calculating requirements and dependencies
  13. MySQL 的性能(上篇)—— SQL 执行时间分析
  14. laravel框架一种方便的快速填充数据的方法
  15. CSS3动画详解(超详细)
  16. dataguard主库删除归档日志后从库恢复的方法
  17. [转]Java Web笔记:搭建环境和项目配置(MyEclipse 2014 + Maven + Tomcat)
  18. 火币网API文档——Websocket 请求与订阅示例
  19. spring jpetstore研究入门(zz)
  20. Methods to reduce the number of pipeline stages

热门文章

  1. 【ACM】poj_3981_字符串替换_201307271019
  2. js 清空对象\删除对象的属性
  3. 安装10gR2的硬件要求
  4. 如何构建一个轻量级级的DI(依赖注入)
  5. 黑马程序猿——JAVA基础——集合
  6. 读取url中某个值
  7. Chrome改动浏览器User Agent
  8. Xmind8破解激活
  9. 通过top 5等待事件查看sql语句
  10. encodeURIComponent编码java后台解码出现乱码问题