Reading comprehension HDU - 4990 (矩阵快速幂 or 快速幂+等比数列)
for(i=;i<=n;i++)
{
if(i&)ans=(ans*+)%m;
else ans=ans*%m;
}
给定n,m。让你用O(log(n))以下时间算出ans。
打表,推出 ans[i] = 2^(i-1) + f[i-2]
故 i奇数:ans[i] = 2^(i-1) + 2^(i-3) ... + 1;
i偶数:ans[i] = 2^(i-1) + 2^(i-3) ... + 2;
故可以用等比数列求和公式。
公式涉及除法。我也没弄懂为啥不能用逆元,貌似说是啥逆元可能不存在。
所以a/b % m == a%(b*m) / b 直接搞了。
#include <cstdio>
#include<iostream>
#include <cstring>
#include <cmath>
#include <algorithm>
#include<vector>
typedef long long LL; LL quick_pow(LL a, LL b, LL m)
{
LL ans = , base = a % m;
while(b)
{
if (b & ) ans = (ans * base) % m;
base = (base * base) % m;
b >>= ;
}
return ans;
} int main()
{
LL n, m; while(~scanf("%lld%lld", &n, &m))
{
LL a1 = (n % ) ? : ;
LL sum = a1 * (quick_pow(, (n+)/, *m) - );
LL ans = (sum % ( * m)) / ;
printf("%lld\n", ans);
}
}
第一次学矩阵快速幂,再贴个矩阵快速幂的板子。
f[n] = f[n-1] + 2 * f[n-2] + 1,故可以构造矩阵
f[n-] f[n-] f[n-] f[n]
=
模板来源:https://blog.csdn.net/u012860063/article/details/39123605
#include <cstdio>
#include<iostream>
#include <cstring>
#include <cmath>
#include <algorithm>
#include<vector>
typedef long long LL; struct Matrix
{
LL m[][];
} I, A, B, T; LL a,b,n, mod;
int ssize = ; Matrix Mul(Matrix a,Matrix b)
{
int i,j,k;
Matrix c;
for (i = ; i <= ssize; i++)
for(j = ; j <= ssize; j++)
{
c.m[i][j]=;
for(k = ; k <= ssize; k++)
{
c.m[i][j]+=(a.m[i][k]*b.m[k][j]);
c.m[i][j]%=mod;
}
} return c;
} Matrix quickpagow(int n)
{
Matrix m = A, b = I;
while(n)
{
if(n & ) b = Mul(b, m);
n >>= ;
m = Mul(m, m);
}
return b;
} int main()
{
while(~scanf("%lld%lld",&n, &mod))
{
memset(I.m,,sizeof(I.m));
memset(A.m,,sizeof(A.m));
memset(B.m,,sizeof(B.m)); for(int i = ; i <= ssize; i++) I.m[i][i] = ;
//I是单位矩阵 B.m[][] = , B.m[][] = , B.m[][] = ;
A.m[][] = ;
A.m[][] = A.m[][] = A.m[][] = A.m[][] = ; if(n == ) printf("%lld\n", % mod);
else if(n == ) printf("%lld\n", % mod);
else
{
T = quickpagow(n-);
T = Mul(B, T);
printf("%lld\n",T.m[][] % mod);
}
}
}
Reading comprehension HDU - 4990 (矩阵快速幂 or 快速幂+等比数列)的更多相关文章
- Reading comprehension HDU - 4990
Read the program below carefully then answer the question. #pragma comment(linker, "/STACK:1024 ...
- HDU4990 Reading comprehension —— 递推、矩阵快速幂
题目链接:https://vjudge.net/problem/HDU-4990 Reading comprehension Time Limit: 2000/1000 MS (Java/Others ...
- hdu-4990 Reading comprehension(快速幂+乘法逆元)
题目链接: Reading comprehension Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K ( ...
- 【模拟题(电子科大MaxKU)】解题报告【树形问题】【矩阵乘法】【快速幂】【数论】
目录: 1:一道简单题[树形问题](Bzoj 1827 奶牛大集会) 2:一道更简单题[矩阵乘法][快速幂] 3:最简单题[技巧] 话说这些题目的名字也是够了.... 题目: 1.一道简单题 时间1s ...
- 求幂大法,矩阵快速幂,快速幂模板题--hdu4549
hdu-4549 求幂大法.矩阵快速幂.快速幂 题目 M斐波那契数列 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 ...
- hdu 4291 矩阵幂 循环节
http://acm.hdu.edu.cn/showproblem.php?pid=4291 凡是取模的都有循环节-----常数有,矩阵也有,并且矩阵的更奇妙: g(g(g(n))) mod 109 ...
- Cognitive Graph for Multi-Hop Reading Comprehension at Scale(ACL2019) 阅读笔记与源码解析
论文地址为:Cognitive Graph for Multi-Hop Reading Comprehension at Scale github地址:CogQA 背景 假设你手边有一个维基百科的搜索 ...
- 快速幂 ,快速幂优化,矩形快速幂(java)
快速幂形式 public static int f(int a,int b,int c){ int ans =1; int base=a; while(b!=0){ if((b&1)!=0) ...
- 论文选读二:Multi-Passage Machine Reading Comprehension with Cross-Passage Answer Verification
论文选读二:Multi-Passage Machine Reading Comprehension with Cross-Passage Answer Verification 目前,阅读理解通常会给出 ...
随机推荐
- jQuery jQuery on()方法
jQuery on()方法是官方推荐的绑定事件的一个方法. $(selector).on(event,childSelector,data,function,map) 由此扩展开来的几个以前常见的方法 ...
- asp.net MVC 4.0 Controller回顾——ModelBinding实现过程
以DefaultModelBinder为例 为简单模型绑定(BindSimpleModel)和复杂模型绑定(BindComplexModel) public virtual object BindMo ...
- UICollectionView基础API笔记
UICollectionView系列API,属性含义笔记.在UICollectionView笔记1中我们了解了UICollectionView是什么,以及可以做什么:在UICollectionView ...
- java+elipse安装及部分问题
1. elipse下载.安装.jdk环境配置教程: https://www.cnblogs.com/ForestDeer/p/6647402.html 2.eclipse使用教程: https://j ...
- ios Lable 添加删除线
遇到坑了: NSString *goodsPrice = @"230.39"; NSString *marketPrice = @"299.99"; NSStr ...
- 【Java】Maven 常用命令
Maven 常用命令 mvn compile 编译,生成target文件夹,里边有classes文件夹,存放.class文件 mvn test 执行测试 mvn package 打包,在targert ...
- Git入门与常用操作简述
下载gitbash及使用指南: http://rogerdudler.github.io/git-guide/index.zh.html 初次使用 配置用户名和邮箱: $ git config --g ...
- php编码转换相关
iconv (PHP 4 >= 4.0.5, PHP 5, PHP 7) iconv — 字符串按要求的字符编码来转换 string iconv ( string $in_charset , s ...
- freebsd为网卡设置别名
ifconfig em0 172.16.21.5 netmask 255.255.255.0 alias
- 访问FTP站点下载文件,提示“当前的安全设置不允许从该位置下载文件”的解决方案
访问FTP站点下载文件,提示“当前的安全设置不允许从该位置下载文件”的解决方案: 打开客戶端浏览器--工具---internet-安全-自定义级别-选择到低到中低. 然后点受信任站点,把你要访问的站点 ...