算法提高 递推求值
时间限制:1.0s 内存限制:256.0MB
问题描述
已知递推公式:
F(n, 1)=F(n-1, 2) + 2F(n-3, 1) + 5,
F(n, 2)=F(n-1, 1) + 3F(n-3, 1) + 2F(n-3, 2) + 3.
初始值为:F(1, 1)=2, F(1, 2)=3, F(2, 1)=1, F(2, 2)=4, F(3, 1)=6, F(3, 2)=5。
输入n,输出F(n, 1)和F(n, 2),由于答案可能很大,你只需要输出答案除以99999999的余数。
输入格式
输入第一行包含一个整数n。
输出格式
输出两行,第一行为F(n, 1)除以99999999的余数,第二行为F(n, 2)除以99999999的余数。
样例输入
4
样例输出
14
21
数据规模和约定
1<=n<=10^18。
import java.util.Scanner;
public class 递推求值 {
static final int mod=99999999;
static long num[]=new long[] {6,5,1,4,2,3,1};
static long n,ans1,ans2;
static class Matrix{
long mat[][]=new long[7][7];
Matrix multi(Matrix a) { //矩阵乘法
Matrix rec=new Matrix();
for(int i=0;i<7;i++) {