当前位置: 代码迷 >> 综合 >> HDOJ 1005 Number Sequence
  详细解决方案

HDOJ 1005 Number Sequence

热度:23   发布时间:2023-10-21 20:18:04.0

HDACM1005
此题关键在于找出循环节,循环节的最坏可能是49次一个循环(因为对于f[n-1] 或者 f[n-2] 的取值只有 0,1,2,3,4,5,6 这7个数,A,B又是固定的,所以就只有49种可能值了)。因为循环开始并不一定是 1 1 开始的所有,我们从第只要判断第i(i>5)项和第4项相等且i-1项和第3项相等说明找到了循环节。

import java.util.Scanner;public class Main{public static void main(String[] args) {Scanner sc = new Scanner(System.in);while (sc.hasNext()) {int a =sc.nextInt();int b =sc.nextInt();int n = sc.nextInt();if (n==0&&b==0&&a==0) {break;}if (n<3) {System.out.println("1");continue;}int[] arr = new int[54];arr[1]=1;arr[2]=1;int m=0;int i = 3;boolean boo = false;for (; i < 54; i++) {arr[i] = (arr[i-1]*a+arr[i-2]*b)%7;if (i>5&&arr[i]==arr[4]&&arr[i-1]==arr[3]) {m = i-4;break;}}System.out.println(arr[(n-3)%m+3]);}}
}
  相关解决方案