每日一题——洛谷 终于结束的起点
大家好呀,我是爬行系,今天打卡的是斐波拉契数列 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;}}}