hiho 1143 骨牌覆盖问题 java
来源:互联网 发布:eclipse怎么写java程序 编辑:程序博客网 时间:2024/05/16 14:37
这道题很明显是求斐波那契数列,输入的而且题干要求求MOD199999997 所以很明显大小会超过int可能超过long,通过对每个求MOD可以消除溢出
求斐波那契由于输入太大可以考虑用快速幂级数算法,这道题主要需要知道斐波那契可以用矩阵
M={0111}
相乘得到,那么就是求M^62247088由于62247088太大,累加可能TLE所以需要进行优化
优化方法,将62247088化为2进制,设长度为len
分别求M^1……len
在根据62247088的2进制,用乘以第i位为1时M^i{1001}
import java.util.ArrayList;import java.util.List;import java.util.Scanner;/** * Created by zjl on 17/4/12. */public class hiho_1143_骨牌覆盖问题 { public static void main(String [] args){ Scanner in = new Scanner(System.in); int len = in.nextInt(); String str = Integer.toBinaryString(len); int length = str.length(); List<Matrix> list = new ArrayList<>(); Matrix matrix = new Matrix(); list.add(matrix); for(int i=1;i<length;i++){ list.add(time(list.get(i-1),list.get(i-1))); } matrix = new Matrix(); matrix.a=1; matrix.b=0; matrix.c=0; matrix.d=1; for(int i=0;i<length;i++){ if(str.charAt(length-i-1)=='1'){ matrix=time(matrix,list.get(i)); } } System.out.println(matrix.d); } static class Matrix{ long a=0; long b=1; long c=1; long d=1; } private static Matrix time(Matrix m,Matrix m1){ Matrix m3= new Matrix(); m3.a=(m.a*m1.a+m.b*m1.c)%19999997; m3.b=(m1.b*m.a+m1.d*m.b)%19999997; m3.c=(m1.a*m.c+m1.c*m.d)%19999997; m3.d=(m1.b*m.c+m1.d*m.d)%19999997; return m3; }}
代码中内部类还可以优化,所有求M pow N的问题都可以用这种快速幂的方法解决,比递归快。
0 0
- hiho 1143 骨牌覆盖问题 java
- hiho 41 骨牌覆盖问题·一
- hiho 42 骨牌覆盖问题·二
- hiho 43 骨牌覆盖问题·三
- HIHO #1162 : 骨牌覆盖问题·三
- hihoCoder hiho一下 第四十一周:骨牌覆盖问题
- hiho一(第四十一周)------骨牌覆盖问题·一
- hihoCoder 骨牌覆盖问题·一 hiho一下 第四十一周
- 【hiho一下 第四十一周】骨牌覆盖问题·一
- 【hiho一下 第四十二周】骨牌覆盖问题·二
- hiho一下·41 骨牌覆盖问题·一(矩阵快速幂·费波拉契)
- hihoCoder hiho一下 第四十二周:骨牌覆盖问题·二
- hihoCoder #1143 : 骨牌覆盖问题·一
- hihocoder 1143 : 骨牌覆盖问题·一
- hihoCoder#1143 : 骨牌覆盖问题·一
- 骨牌覆盖问题二
- 骨牌覆盖问题
- 骨牌覆盖问题 KxM
- 在一个数组中实现两个堆栈
- shell中的for循环用法
- 方立勋_30天掌握JavaWeb_Servlet Filter(过滤器)未完
- 第四章 JAVA流程控制语句
- 常用的Java注释标签
- hiho 1143 骨牌覆盖问题 java
- LeetCode 329. Longest Increasing Path in a Matrix 在二维数组中寻找最长递增序列
- 轻量级Java EE企业应用实战(Spring目录第七章)
- 使用python获取系统网络信息
- 51Nod-1241-特殊的排序
- 求二叉树高度
- 熄灯之后的学习——再读《MySQL必知必会》(1)
- 257. Binary Tree Paths
- 中山大学软件工程操作系统实验一报告