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

Posted 大忽悠爱忽悠

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了落谷----P4994 终于结束的起点相关的知识,希望对你有一定的参考价值。

在这里插入图片描述
在这里插入图片描述

终于结束的起点题解集合


递推

思路:

首先无论取什么模数 M,最终模 M 下的斐波拉契数列都会是 0, 1, …, 0, 1, …

我们需要求出: 请你求出最小的 n > 0,使得 fid(n) mod M=0,fib(n+1) mod M=1;

例如:

在这里插入图片描述
其实本题本质还是不断递推求出fib数列每一项的值,求的同时对M进行取模,然后判断当前取模得出的结果是否为0,并且同时下一位对M取模得出的结果应该为1

我们设3个变量f[0] f[1] temp

  • f[0]记录当前斐波那契数列的值
  • f[1]记录下一个的值
  • temp用作更新用的值(辅助变量)

下面是更新操作(滚存)

在每一次循环中,我们做到

			int temp = dp[0];
			dp[0] = dp[1];
			dp[1] = (temp + dp[1]) % M;

代码:

#include<iostream>
using namespace std;
class Solution 
{
public:
	int solution(int M)
	{
		int dp[2] = { 0,1 };
		for (int i = 1;; i++)
		{
			int temp = dp[0];
			dp[0] = dp[1];
			dp[1] = (temp + dp[1]) % M;
			if (dp[0] % M == 0 && dp[1] % M == 1) return i;
		}
	}
};
int main()
{
	Solution s;
	int n, M;
	cin>> M;
	cout<<s.solution(M)<<endl;
	return 0;
}

在这里插入图片描述

以上是关于落谷----P4994 终于结束的起点的主要内容,如果未能解决你的问题,请参考以下文章

终于结束的起点——Adios

终于结束的起点

落谷 2196 挖地雷

落谷P1801 黑匣子

落谷P1101 单词方阵 //参考代码

css 免责声明文本的酷片段。至少是一个很好的起点