【洛谷 4994】终于结束的起点
【题目】
传送门
题目背景:
终于结束的起点
终于写下句点
终于我们告别
终于我们又回到原点
… … …… ……
一个个 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   m o d   m = k    ⟺    a = b m + k ( m > 0 , 0 ≤ k < m ) a \bmod m =k \iff a = bm + k\ (m > 0, 0 \leq k < 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】终于结束的起点相关推荐
- [洛谷月赛]终于结束的起点
题目背景 终于结束的起点 终于写下句点 终于我们告别 终于我们又回到原点 -- 一个个 Oler 的竞赛生涯总是从一场 NOIp 开始,大多也在一场 NOIp 中结束,好似一次次轮回在不断上演. 如果 ...
- 落谷----P4994 终于结束的起点
终于结束的起点题解集合 递推 递推 思路: 首先无论取什么模数 M,最终模 M 下的斐波拉契数列都会是 0, 1, -, 0, 1, - 我们需要求出: 请你求出最小的 n > 0,使得 fid ...
- 刷算法第13天(洛谷结束)——总结+P4994 终于结束的起点
P4994 终于结束的起点 import java.util.Scanner;public class Main {public static void main(String[] args) {Sc ...
- 【Python】P4994 终于结束的起点
题目背景 终于结束的起点 终于写下句点 终于我们告别 终于我们又回到原点 -- 一个个 OIer 的竞赛生涯总是从一场 NOIp 开始,大多也在一场 NOIp 中结束,好似一次次轮回在不断上演. 如果 ...
- luogu P4994 终于结束的起点
题目背景 终于结束的起点 终于写下句点 终于我们告别 终于我们又回到原点 -- 一个个 OIer 的竞赛生涯总是从一场 NOIp 开始,大多也在一场 NOIp 中结束,好似一次次轮回在不断上演. 如果 ...
- 终于结束的起点(滚动数组,记忆化搜索)
任意门 终于结束的起点 题目背景 终于结束的起点 终于写下句点 终于我们告别 终于我们又回到原点 -- 一个个 OIer 的竞赛生涯总是从一场 NOIp 开始,大多也在一场 NOIp 中结束,好似一次 ...
- 五月天的《终于结束的起点》
作者:将离 链接:https://www.zhihu.com/question/55080303/answer/144303735 来源:知乎 这首歌是去年五月天的第九张专辑的第十一首歌,它前奏是五月 ...
- P4994 终于结束的起点
P4994 终于结束的起点 始于蓝桥,终于蓝桥 #include <iostream> #include <cstring> #include <algorithm> ...
- 4.21每日一题之终于结束的起点(洛谷c++)|斐波那契数列
最新文章
- 六、MyBatis教程之六注解使用详解
- Mongodb查询引用
- 浅谈微博精准推荐——用户行为挖掘与相似用户挖掘
- ubuntu 只有客人会话登录(第一次深刻感受文件权限的威力 )
- C/C++程序员必须熟悉的开源库
- 生活中java继承例子_简单继承例子:java
- Jquery Mobile dialog的生命周期
- 开源能带来什么?听听入选2021胡润U30创业领袖榜单的90后怎么说
- kafka partition分配_logstash消费kafka数据,partition分配不均衡
- 苹果进入后 iPhone 时代!
- LabVIEW数字抽奖程序
- 3.	Zigbee应用程序框架开发指南 - 应用程序框架目录结构
- 中图分类法----S 农业科学
- 如何把小程序游戏运行到自有App中?(IOS篇)
- 1万字!彻底看懂微信小程序
- Java 中 Boolean 和 boolean的默认值和修改默认值
- 如何查看自己的公网ip
- python函数参数之必选参数,默认参数,可变参数,关键字参数
- 发展最快的小程序:甩甩宝宝
- 腾讯企业邮箱登录、网易企业邮箱、TOM企业邮箱,各大企业邮箱如何申请登录?
热门文章
- matlab 毕业论文题目,与matlab相关主题论文_基于matlab的论文题目_论文翻译器
- matlab写出函数表达式,matlab 由状态空间表达式求传递函数 笔记 | 学步园
- python代码示例500行源代码-500行代码使用python写个微信小游戏飞机大战游戏
- 【putty】html中调起客户端putty
- 进销存软件打通商贸批零行业,从数据做到有效经营
- Linux 下如何设置防火墙
- 手机修图软件测试,号称手机版PS?一起测评下这个名叫泼辣修图的APP到底有多厉害?...
- Microsoft Visual Studio2010c语言程序太快没看到怎么办
- 牛客网-《刷C语言百题》第一期
- 基于Linux系统的快速查找方法