> 文档中心 > 每日一题——洛谷 终于结束的起点

每日一题——洛谷 终于结束的起点


大家好呀,我是爬行系,今天打卡的是斐波拉契数列 fid(n)的简单变体。欢迎大家加入我们的社区,一起每天打卡学习,可以和大佬一起学习哦
高校算法学习社区

文章目录


前言

斐波拉契:前两项为0,1,其余每项都是前两项之和;
同余定理:(a+b)%m=(a%m+b%m)%m

题目描述

题目描述
题目链接

解题思路

题目要求的的n>0时,第一次出现相邻两项是0,1,并输出前一项的n,这就意味着我们不需要保留计算的每一项,i从0开始,只需要不断迭代,每两项做一次判断就好,符合条件就可以停止循环,并输出i。

AC代码

import java.util.Scanner;public class Main{public static void main(String[] args){Scanner sc=new Scanner(System.in);int M=sc.nextInt();int x1=0,x2=1,x3;int i=0;while(true){x3=(x1+x2)%M;i++;if(x2==0&&x3==1){System.out.print(i);break;}x1=x2%M;x2=x3%M;}}}