题目描述
数字序列定义如下:
f(1)= 1,f(2)= 1,f(n)=(A * f(n-1)+ B * f(n-2))% 7。
给定A,B和n,你要计算f(n)的值。
f(1)= 1,f(2)= 1,f(n)=(A * f(n-1)+ B * f(n-2))% 7。
给定A,B和n,你要计算f(n)的值。
输入
输入由多个测试用例组成。 每个测试用例在单行(1 <= A,B <= 1000,1 <= n <= 100,000,000)中包含3个整数A,B和n。
三个零信号表示输入的结束,此测试用例不被处理。
三个零信号表示输入的结束,此测试用例不被处理。
输出
对于每个测试用例,在单行上打印f(n)的值。
样例输入
1 1 3
1 2 10
0 0 0
样例输出
2
5
数据太大,直接想当然写会超时!!!规律是个好东西.......
import java.util.Arrays; import java.util.Scanner; public class 数字序列 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner scan=new Scanner(System.in); int f[]=new int [50]; while(scan.hasNext()){ int a=scan.nextInt(); int b=scan.nextInt(); int n=scan.nextInt(); if(a==0 && b==0 && n==0) break; Arrays.fill(f,0); f[1]=1;f[2]=1; for(int i=3;i<=49;i++){ //找规律,49个一循环 f[i]=(a*f[i-1]+b*f[i-2])%7; } System.out.println(f[n%49]); } } }