蓝桥杯-递推求值
来源:互联网 发布:js设置文本框为固定值1 编辑:程序博客网 时间:2024/04/25 21:32
算法提高 递推求值 时间限制: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。
package com.sihai.improve;import java.util.Scanner;public class sihai{ public final static long[][] UNIT = {{0,1,1,0,0,0,0,0}, {1,0,0,1,0,0,0,0}, {0,0,0,0,1,0,0,0}, {0,0,0,0,0,1,0,0}, {2,3,0,0,0,0,0,0}, {0,2,0,0,0,0,0,0}, {0,1,0,0,0,0,1,0}, {1,0,0,0,0,0,0,1}}; //根据递推公式构造的矩阵 public final static long[][] ZERO = new long[8][8]; //元素全为0 public final static long p = 99999999L; //获取矩阵NUIT的n次方结果 public long[][] getNofMatrix(long n) { if(n == 0) return ZERO; if(n == 1) return UNIT; if((n & 1) == 0) { //当n为偶数时 long[][] matrix = getNofMatrix( n >> 1); return multiOfMatrix(matrix, matrix); } //当n为奇数时 long[][] matrix = getNofMatrix((n - 1) >> 1); return multiOfMatrix(multiOfMatrix(matrix, matrix), UNIT); } //计算矩阵A*B取余99999999的值 public long[][] multiOfMatrix(long[][] A, long[][] B) { long result[][] = new long[A.length][B[0].length]; for(int i = 0;i < A.length;i++) { for(int j = 0;j < B[0].length;j++) { for(int k = 0;k < A[0].length;k++) result[i][j] = (result[i][j] + A[i][k] * B[k][j]) % p; } } return result; } public void printResult(long n) { long[][] start = {{6,5,1,4,2,3,3,5}}; if(n == 1) { System.out.println(start[0][4]+"\n"+start[0][5]); return; } else if(n == 2) { System.out.println(start[0][2]+"\n"+start[0][3]); return; } else if(n == 3) { System.out.println(start[0][0]+"\n"+start[0][1]); return; } long[][] A = getNofMatrix(n - 3); start = multiOfMatrix(start, A); System.out.println(start[0][0]+"\n"+start[0][1]); return; } public static void main(String[] args) { Main test = new Main(); Scanner in = new Scanner(System.in); long n = in.nextLong(); test.printResult(n); }}
0 0
- 蓝桥杯 递推求值
- 蓝桥杯-递推求值
- acm-递推求值
- nyoj301 递推求值
- NYOJ301-递推求值
- 递推求值
- 递推求值
- nyoj301递推求值
- 递推求值
- 递推求值
- nyoj 301 递推求值
- Nyoj 301 递推求值
- NYOJ 301 递推求值
- ADV-218 递推求值
- NYISTME 1300 递推求值
- 蓝桥杯:递推求值(快速幂,矩阵快速幂)
- nyoj301递推求值【矩阵快速幂】
- nyoj301——递推求值
- BootStrap的validate表单验证使用
- DOS命令中的mv命令——move
- spring junit4测试
- c# web页面向后台传递数据的几种方法
- windows下python安装lxml
- 蓝桥杯-递推求值
- 笔面试常见问题总结
- 蓝桥杯-算法训练-和为T
- Java的日期与时间(九)Date与String的转换
- 7、MACOS环境搭建——lighttpd服务
- IV11荧光数码管显示器制作
- Java的日期与时间(十)java.time.Instant
- python拗口语法点总计1:迭代器、生成器、元组
- Java工程师学习