题目大意:求(1^K + 2^K + 3K + - + N^K) % 2^32 解题思路: 借用别人的图 能够先打表,求出Cnm,用杨辉三角能够高速得到 #include<cstdio> typedef unsigned long long ll; const int N = 55; const ll mod = (1LL << 32); struct Matrix{ ll mat[N][N]; }A, B, tmp; ll n, num[N]; ll C[N][N]; int K…
题目链接:http://lightoj.com/volume_showproblem.php?problem=1132 题意:给出n和m.求sum(i^m)%2^32.(1<=i<=n) (1<=n<=10^15,0<=m<=50). 思路:本题有两种方法:二分和矩阵. (1)二分:设我们用DFS(n,m)来计算上面的式子.假如n为奇数,比如n=13,那么我们单独计算13^m,那么剩下的是n=12.前一半是DFS(6,m),后一半是7^m+8^m+……12^m. 进而n…
题目链接:http://lightoj.com/volume_showproblem.php?problem=1132 题意: 给定n.k,求(1K + 2K + 3K + ... + NK) % 232. 题解: 设sum(i) = 1K + 2K + 3K + ... + iK 所以要从sum(1)一直推到sum(n). 所以要找出sum(i)和sum(i+1)之间的关系: 好了可以造矩阵了. (n = 6时) 矩阵表示(大小为 1 * (k+2)): 初始矩阵start: 也就是: 特殊矩…
奥运 [题目链接]奥运 [题目类型]矩阵+二分等比求和 &题解: 首先离散化城市,之后就是矩阵快速幂了,但让求的是A^(t1)+A^(t1+1)+...+A^(t2),我先想的是打表,但时间真的太慢了,之后网上查的二分等比求和,这样logn就可以求等比矩阵的前n项和了 还有用二分等比求和时,矩阵最好用数组表示,尽量不用vector,我试了好几发,总是T,当然也有可能是我写的low了吧 - - &代码: #include <cstdio> #include <bitset&…
题目大意:已知递推公式和边缘值,求某项的最后m(0<m<5)位数字. 题目分析:矩阵二分幂的模板题. 代码如下: # include<iostream> # include<cstdio> # include<cstring> # include<algorithm> using namespace std; struct matrix { ][]; matrix(int _r,int _c):r(_r),c(_c){} }; int a,b,n…
1142 - Summing up Powers (II)    PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 MB Shanto is learning how to power up numbers and he found an efficient way to find kth power of a matrix. He was quite happy with his discovery.…
题目链接:http://poj.org/problem?id=3233 解题报告:输入一个边长为n的矩阵A,然后输入一个k,要你求A + A^2 + A^3 + A^4 + A^5.......A^k,然后结果的每个元素A[i][j] % m.(n <= 30,k < 10^9,m < 10^4) 要用到矩阵快速幂,但我认为最重要的其实还是相加的那个过程,因为k的范围是10^9,一个一个加肯定是不行的,我想了一个办法就是我以k = 8为例说明: ans = A + A^2 + A^3 +…
题目 和 LightOj 1096 - nth Term 差不多的题目和解法,这道相对更简单些,万幸,这道比赛时没把模版给抽风坏. #include<stdio.h> #include<string.h> #include<algorithm> using namespace std; int num,mod; struct matrix { ][]; }origin,answ; matrix multiply(matrix x,matrix y)//矩阵乘法 { ma…
题目地址:http://poj.org/problem?id=3233 题意:给你一个矩阵A,让你求A+A^2+……+A^k模p的矩阵值 题解:我们知道求A^n我们可以用二分-矩阵快速幂来求,而 当k是奇数A+A^2+……+A^k=A^(k/2+1)+(A+A^2+……A^(k/2))*(1+A^(k/2+1)) 当k是偶数A+A^2+……+A^k=(A+A^2+……A^(k/2))*(1+A^(k/2)) 可以在一次用二分. AC代码: #include <iostream> #includ…
矩阵 时间限制:1秒 空间限制:131072K 题目描述 给出一个n * m的矩阵.让你从中发现一个最大的正方形.使得这样子的正方形在矩阵中出现了至少两次.输出最大正方形的边长. 输入描述: 第一行两个整数n, m代表矩阵的长和宽: 接下来n行,每行m个字符(小写字母),表示矩阵: 输出描述: 输出一个整数表示满足条件的最大正方形的边长. 示例1 输入 5 10 ljkfghdfas isdfjksiye pgljkijlgp eyisdafdsi lnpglkfkjl 输出 3 备注: 对于3…