社区
数据结构与算法
帖子详情
最近斐波那契数列的问题好多呀!
绿色夹克衫
2012-09-28 07:03:51
http://www.51nod.com/question/index.html#!questionId=627
再来一道,这个问题更有意思。解决之后的成就感更强。
有一个无穷长的数列,元素是斐波那契数列 mod 10^13, 现在给出一个数值,求该数值在这个数列中第1次出现的位置。
该数列的起始项是:0.
0 1 1 2 3 5......
比如给出377,输出14,因为第14项是377
...全文
363
11
打赏
收藏
最近斐波那契数列的问题好多呀!
http://www.51nod.com/question/index.html#!questionId=627 再来一道,这个问题更有意思。解决之后的成就感更强。 有一个无穷长的数列,元素是斐波那契数列 mod 10^13, 现在给出一个数值,求该数值在这个数列中第1次出现的位置。 该数列的起始项是:0. 0 1 1 2 3 5...... 比如给出377,输出14,因为第14项是377
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
DeDeWo
2012-09-30
打赏
举报
回复
fib(n) mod 10^13 元素的是这样分布的,
0,1,1,2,3,5,a1,a2,,,,,,am, 0,1,1,2,3,5,.....a1,a2......am .
liu454824891
2012-09-30
打赏
举报
回复
这个可以用递归来做吧,我写了个代码:
#include<stdio.h>
int fun(int n)
{
int sum1;
if(n==0)
{
return 0;
}
if(n==1)
{
return 1;
}
sum1=fun(n-1)+fun(n-2);
return sum1;
}
void main()
{
int n,sum=0;
scanf("%d",&n);
printf("%d\n",fun(n));
}
绿色夹克衫
2012-09-29
打赏
举报
回复
mod 之后就不是递增的了。
[Quote=引用 7 楼 的回复:]
为什么不可以呢?
对于这种题目而言,循环节都可以二分计算出来。对于每一个数从第一个循环区间二分查找这个数的位置即可,这个区间中的数一定严格递增的。
……
[/Quote]
DeDeWo
2012-09-29
打赏
举报
回复
[Quote=引用 6 楼 的回复:]
有循环节长度就可以二分么?
引用 5 楼 的回复:
先暴力算出 mod 10^13 的循环节,然后就可以二分查找位置了,利用矩阵计算 fib(n) , 复杂度 O( (logn)^2 )
[/Quote]
为什么不可以呢?
对于这种题目而言,循环节都可以二分计算出来。对于每一个数从第一个循环区间二分查找这个数的位置即可,这个区间中的数一定严格递增的。
绿色夹克衫
2012-09-29
打赏
举报
回复
有循环节长度就可以二分么?
[Quote=引用 5 楼 的回复:]
先暴力算出 mod 10^13 的循环节,然后就可以二分查找位置了,利用矩阵计算 fib(n) , 复杂度 O( (logn)^2 )
[/Quote]
DeDeWo
2012-09-28
打赏
举报
回复
先暴力算出 mod 10^13 的循环节,然后就可以二分查找位置了,利用矩阵计算 fib(n) , 复杂度 O( (logn)^2 )
绿色夹克衫
2012-09-28
打赏
举报
回复
我的方法也类似,主要靠计算循环节长度,感觉是个log(n)^2的方法。不过常数大概是30-50左右的样子。
http://www.51nod.com/answer/index.html#!answerId=536
[Quote=引用 3 楼 的回复:]
呵呵,仅限于理论分析,
另外关于其中周期可以参考链接:
http://www.math.temple.edu/~renault/fibonacci/fib.html
[/Quote]
mathe
2012-09-28
打赏
举报
回复
呵呵,仅限于理论分析,
另外关于其中周期可以参考链接:
http://www.math.temple.edu/~renault/fibonacci/fib.html
绿色夹克衫
2012-09-28
打赏
举报
回复
哈哈,mathe大牛也感兴趣?这个问题真的很有意思!我一会儿去写个自己的方法。
[Quote=引用 1 楼 的回复:]
其实主要问题在于算mod 5^13
可以查看emath上的公式,可以看出2^(n-1)F_n(mod 5^13)可以写成一个n的25次多项式。其周期应该是4*5^13
而给定F_n=X(mod 5^13),我们可以先根据公式算出2^(n-1)F_n(mod 5)算出最小的n1,那么20k+n1就是所有的可能的n,然后再次模5^2,可以得出k(mod 5)的值,得出n必然是100k+n2的形式……
[/Quote]
mathe
2012-09-28
打赏
举报
回复
其实主要问题在于算mod 5^13
可以查看
emath
上的公式,可以看出2^(n-1)F_n(mod 5^13)可以写成一个n的25次多项式。其周期应该是4*5^13
而给定F_n=X(mod 5^13),我们可以先根据公式算出2^(n-1)F_n(mod 5)算出最小的n1,那么20k+n1就是所有的可能的n,然后再次模5^2,可以得出k(mod 5)的值,得出n必然是100k+n2的形式,一直上去即可。
而模2^13比较简单,因为周期不大
Fibonacci数列
斐波那契数列
PPT学习教案.pptx
Fibonacci数列
斐波那契数列
PPT学习教案.pptx
斐波那契数列
-C++代码
本代码使用C++语言书写,编译环境VS2013。...
斐波那契数列
(Fibonacci Sequence)又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、…… 本代码是练习作品,如有错误或修改,请指正,感谢感谢。
算法攻略
应用篇:多思路求解
斐波那契数列
、拓补排序、地图最短路径
问题
、网络爬虫等。 如果大家能够持之以恒的学完整个系列,相信对算法的整体规划有了一个清晰的认识,能够尝试将学习到的算法知识运用在实际的开发过程中,...
非递归实现fibonacci数列
使用C++非递归实现fibonacci数列,对正在学习算法的同学应该挺有帮助的
python
斐波那契数列
第n项.docx
递归方法 def fibonacci(n): if n <= 1: return n else: return fibonacci(n-1) + fibonacci(n-2) n = int(input("请输入要计算的
斐波那契数列
的项数:")) print("
斐波那契数列
的第", n, "项为:", fibonacci(n)) 2...
数据结构与算法
33,006
社区成员
35,326
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章