首页 > 其他 > 详细

ACM之数列循环节

时间:2016-03-28 12:03:28      阅读:251      评论:0      收藏:0      [点我收藏+]

技术分享
初次接触这道题,我便想到了原来的写过的斐波拉契数列,便用一个个递推的函数从n一个一个的计算,直到运算出f[n]的值,结果呢,可想而知,不是时间超时,便是堆栈溢出!
后面才知道这种题一定存在一个循环的节点,而你所做的便是通过程序或这自己的计算得到出现循环的位置!下面通过代码解释:技术分享

接下来这题也是数列循环节的问题
技术分享

此题便既可以通过程序寻找循环的节点,亦可以同过数学运算得到循环的节点:
第一种方法:数学运算法
技术分享
可以发现这是从2开始每隔四个出现一次
于是代码为
技术分享
注意各大OJ ac的标准不是需要执行题中所给的各个步骤,只需要你在最后的时候得到的结果满足题目的要求就可以了!

接下来是一种较笨的方法,因为题中所给的数据并不算大,只到1000000,所以我们完全可以采取去不打印出它与3取余的结果,再判断输出,代码如下:
技术分享
可以发现,在需求的数不大的情况下,也是可以保证时间和空间都不超而ac,附上memset函数简介:
技术分享

同理,该题也可以运用上题的做法,代码如下:
技术分享
最后附上取余运算常用的公式:
技术分享
最后希望此文能帮助大家很好的理解数列循环节类似的问题!此文有些内容来源各网站,对此表示感谢!

                                    ————2016.3.27晚 于电子楼311

ACM之数列循环节

原文:http://blog.csdn.net/u011089758/article/details/50994918

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!