【题目】

传送门

题目背景:

终于结束的起点
终于写下句点
终于我们告别
终于我们又回到原点
… … …… ……

一个个 OIer 的竞赛生涯总是从一场 NOIp 开始,大多也在一场 NOIp 中结束,好似一次次轮回在不断上演。

如果这次 NOIp 是你的起点,那么祝你的 OI 生涯如同夏花般绚烂。

如果这次 NOIp 是你的终点,那么祝你的 OI 回忆宛若繁星般璀璨。

也许这是你最后一次在洛谷上打比赛,也许不是。

不过,无论如何,祝你在一周后的比赛里,好运。

当然,这道题也和轮回有关系。

题目描述:

广为人知的斐波拉契数列 f i b ( n ) \mathrm{fib}(n) fib(n) 是这么计算的

也就是 0 , 1 , 1 , 2 , 3 , 5 , 8 , 13 ⋯ 0, 1, 1, 2, 3, 5, 8, 13 \cdots 0,1,1,2,3,5,8,13⋯,每一项都是前两项之和。

小 F 发现,如果把斐波拉契数列的每一项对任意大于 1 1 1 的正整数 m m m 取模的时候,数列都会产生循环。

当然,小 F 很快就明白了,因为 ( f i b ( n − 1 )   m o d   m ) (\mathrm{fib}(n - 1) \bmod m) (fib(n−1)modm) 和 ( f i b ( n − 2 )   m o d   m ) (\mathrm{fib}(n - 2) \bmod m) (fib(n−2)modm) 最多只有 m 2 m ^ 2 m2 种取值,所以在 m 2 m ^ 2 m2 次计算后一定出现过循环。

甚至更一般地,我们可以证明,无论取什么模数 m m m,最终模 m m m 下的斐波拉契数列都会是 0 , 1 , ⋯   , 0 , 1 , ⋯ 0, 1, \cdots, 0, 1, \cdots 0,1,⋯,0,1,⋯。

现在,给你一个模数 m m m,请你求出最小的 n > 0 n > 0 n>0,使得 f i b ( n )   m o d   m = 0 , f i b ( n + 1 )   m o d   m = 1 \mathrm{fib}(n) \bmod m = 0, \mathrm{fib}(n + 1) \bmod m = 1 fib(n)modm=0,fib(n+1)modm=1。

输入格式:

输入一行一个正整数 m m m。

输出格式:

输出一行一个正整数 n n n。

样例数据:

【样例 1 1 1】

输入
2

输出
3

【样例 2 2 2】

输入
6

输出
24

说明:

【样例 1 1 1 解释】

斐波拉契数列为 0 , 1 , 1 , 2 , 3 , 5 , 8 , 13 , 21 , 34 , ⋯ 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, \cdots 0,1,1,2,3,5,8,13,21,34,⋯,在对 2 2 2 取模后结果为 0 , 1 , 1 , 0 , 1 , 1 , 0 , 1 , 1 , 0 , ⋯ 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, \cdots 0,1,1,0,1,1,0,1,1,0,⋯。

我们可以发现,当 n = 3 n = 3 n=3 时, f i b ( n )   m o d   2 = 0 , f i b ( n + 1 )   m o d   2 = 1 \mathrm{fib}(n) \bmod 2= 0, \mathrm{fib}(n + 1) \bmod 2 = 1 fib(n)mod2=0,fib(n+1)mod2=1,也就是我们要求的 n n n 的最小值。

【数据范围】

对于 30 % 30\% 30% 的数据, m ≤ 18 m \leq 18 m≤18;

对于 70 % 70\% 70% 的数据, m ≤ 2018 m \leq 2018 m≤2018;

对于 100 % 100\% 100% 的数据, 2 ≤ m ≤ 706150 = 2 \leq m \leq 706150= 2≤m≤706150= 0xAC666

提示:

如果你还不知道什么是取模 (   m o d   ) (\bmod) (mod),那我也很乐意告诉你,模运算是求整数除法得到的余数,也就是竖式除法最终「除不尽」的部分,也即
a &VeryThinSpace; m o d &VeryThinSpace; m = k &ThickSpace; ⟺ &ThickSpace; a = b m + k ( m &gt; 0 , 0 ≤ k &lt; m ) a \bmod m =k \iff a = bm + k\ (m &gt; 0, 0 \leq k &lt; m) amodm=k⟺a=bm+k (m>0,0≤k<m)

其中 a , b , k a, b, k a,b,k 都是非负整数。

如果你使用 C / C++,你可以使用 % 来进行模运算。

如果你使用 Pascal,你可以使用 mod 来进行模运算。

【分析】

这道题走心了啊

其实不是一道难题,暴力就可以过(暴力出奇迹啊

然后注意一下内存的优化(可以用滚动数组)就可以了

希望自己一个星期后的 NOIP RP++ 啊,就是暴力都能 A 的那种(当然是不可能的)

【代码】

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int main()
{int m,i=1;scanf("%d",&m);int a=0,b=1,c;while(1){c=(a+b)%m;if(b==0&&c==1){printf("%d",i);return 0;}a=b,b=c,i++;}return 0;
}

【洛谷 4994】终于结束的起点相关推荐

  1. [洛谷月赛]终于结束的起点

    题目背景 终于结束的起点 终于写下句点 终于我们告别 终于我们又回到原点 -- 一个个 Oler 的竞赛生涯总是从一场 NOIp 开始,大多也在一场 NOIp 中结束,好似一次次轮回在不断上演. 如果 ...

  2. 落谷----P4994 终于结束的起点

    终于结束的起点题解集合 递推 递推 思路: 首先无论取什么模数 M,最终模 M 下的斐波拉契数列都会是 0, 1, -, 0, 1, - 我们需要求出: 请你求出最小的 n > 0,使得 fid ...

  3. 刷算法第13天(洛谷结束)——总结+P4994 终于结束的起点

    P4994 终于结束的起点 import java.util.Scanner;public class Main {public static void main(String[] args) {Sc ...

  4. 【Python】P4994 终于结束的起点

    题目背景 终于结束的起点 终于写下句点 终于我们告别 终于我们又回到原点 -- 一个个 OIer 的竞赛生涯总是从一场 NOIp 开始,大多也在一场 NOIp 中结束,好似一次次轮回在不断上演. 如果 ...

  5. luogu P4994 终于结束的起点

    题目背景 终于结束的起点 终于写下句点 终于我们告别 终于我们又回到原点 -- 一个个 OIer 的竞赛生涯总是从一场 NOIp 开始,大多也在一场 NOIp 中结束,好似一次次轮回在不断上演. 如果 ...

  6. 终于结束的起点(滚动数组,记忆化搜索)

    任意门 终于结束的起点 题目背景 终于结束的起点 终于写下句点 终于我们告别 终于我们又回到原点 -- 一个个 OIer 的竞赛生涯总是从一场 NOIp 开始,大多也在一场 NOIp 中结束,好似一次 ...

  7. 五月天的《终于结束的起点》

    作者:将离 链接:https://www.zhihu.com/question/55080303/answer/144303735 来源:知乎 这首歌是去年五月天的第九张专辑的第十一首歌,它前奏是五月 ...

  8. P4994 终于结束的起点

    P4994 终于结束的起点 始于蓝桥,终于蓝桥 #include <iostream> #include <cstring> #include <algorithm> ...

  9. 4.21每日一题之终于结束的起点(洛谷c++)|斐波那契数列

最新文章

  1. 六、MyBatis教程之六注解使用详解
  2. Mongodb查询引用
  3. 浅谈微博精准推荐——用户行为挖掘与相似用户挖掘
  4. ubuntu 只有客人会话登录(第一次深刻感受文件权限的威力 )
  5. C/C++程序员必须熟悉的开源库
  6. 生活中java继承例子_简单继承例子:java
  7. Jquery Mobile dialog的生命周期
  8. 开源能带来什么?听听入选2021胡润U30创业领袖榜单的90后怎么说
  9. kafka partition分配_logstash消费kafka数据,partition分配不均衡
  10. 苹果进入后 iPhone 时代!
  11. LabVIEW数字抽奖程序
  12. 3. Zigbee应用程序框架开发指南 - 应用程序框架目录结构
  13. 中图分类法----S 农业科学
  14. 如何把小程序游戏运行到自有App中?(IOS篇)
  15. 1万字!彻底看懂微信小程序
  16. Java 中 Boolean 和 boolean的默认值和修改默认值
  17. 如何查看自己的公网ip
  18. python函数参数之必选参数,默认参数,可变参数,关键字参数
  19. 发展最快的小程序:甩甩宝宝
  20. 腾讯企业邮箱登录、网易企业邮箱、TOM企业邮箱,各大企业邮箱如何申请登录?

热门文章

  1. matlab 毕业论文题目,与matlab相关主题论文_基于matlab的论文题目_论文翻译器
  2. matlab写出函数表达式,matlab 由状态空间表达式求传递函数 笔记 | 学步园
  3. python代码示例500行源代码-500行代码使用python写个微信小游戏飞机大战游戏
  4. 【putty】html中调起客户端putty
  5. 进销存软件打通商贸批零行业,从数据做到有效经营
  6. Linux 下如何设置防火墙
  7. 手机修图软件测试,号称手机版PS?一起测评下这个名叫泼辣修图的APP到底有多厉害?...
  8. Microsoft Visual Studio2010c语言程序太快没看到怎么办
  9. 牛客网-《刷C语言百题》第一期
  10. 基于Linux系统的快速查找方法