Count(广工14届竞赛)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6470
这道题目题解就扔了个矩阵快速幂啥都没写。。。。。这题解是太看得懂我这个弱鸡了。
既然是矩阵快速幂那么先扔个矩阵快速幂的学习链接:https://www.luogu.org/problemnew/show/P3390
废话不说上图。这个是斐波那契数列的矩阵的推导。
既然有这种骚东西,肯定有其他的递推式。然后就是我们JX大佬给的神图,我研究半天才懂
有了这些工具,那么这道题目就可以解决了,继续上我的推导过程。
很明显,这道题n从3开始,那么快速幂矩阵时的次方应该是n-2。好了,重点都讲完了,上代码。。。
#include <bits/stdc++.h>
using namespace std;
#define re register
#define ll long long
const int mod=;
void read(int &a)
{
a=;
int d=;
char ch;
while(ch=getchar(),ch>''||ch<'')
if(ch=='-')
d=-;
a=ch-'';
while(ch=getchar(),ch>=''&&ch<='')
a=a*+ch-'';
a*=d;
}
void write(int x)
{
if(x<)
putchar(),x=-x;
if(x>)
write(x/);
putchar(x%+'');
}
int n=;
struct note
{
int a[][];
};
note ans,a,b;
void init()
{
a.a[][]=;
a.a[][]=;
a.a[][]=;
a.a[][]=;
a.a[][]=;
a.a[][]=;
a.a[][]=;
a.a[][]=;
a.a[][]=;
a.a[][]=;
a.a[][]=;
a.a[][]=;
a.a[][]=;
a.a[][]=;
a.a[][]=;
a.a[][]=;
a.a[][]=;
a.a[][]=;
a.a[][]=;
a.a[][]=;
a.a[][]=;
a.a[][]=;
a.a[][]=;
a.a[][]=;
a.a[][]=;
a.a[][]=;
a.a[][]=;
a.a[][]=;
a.a[][]=;
a.a[][]=;
a.a[][]=;
a.a[][]=;
a.a[][]=;
a.a[][]=;
a.a[][]=;
a.a[][]=;
b.a[][]=;
b.a[][]=;
b.a[][]=;
b.a[][]=;
b.a[][]=;
b.a[][]=;
}
note Mat(note x,note y)
{
note c;
for(re int i=;i<=;i++)
for(re int j=;j<=;j++)
c.a[i][j]=;
for(re int i=;i<=;i++)
for(re int j=;j<=;j++)
for(re int k=;k<=;k++)
c.a[i][j]=(c.a[i][j]+1ll*x.a[i][k]*y.a[k][j]%mod)%mod;
return c;
}
int main()
{
int T;
read(T);
while(T--)
{
ll n;
scanf("%lld",&n);
n-=;
init();
for(re int i=;i<=;i++)
for(re int j=;j<=;j++)
ans.a[i][j]=;
for(re int i=;i<=;i++)
ans.a[i][i]=;
while(n)
{
if(n&)
ans=Mat(ans,a);
a=Mat(a,a);
n>>=;
}
int sum=;
for(re int i=;i<=;i++)
sum=(sum+1ll*ans.a[][i]*b.a[][i]%mod)%mod;
write(sum);
putchar('\n');
}
return ;
}
代码应该很好懂,我就不注释了 Orz
Count(广工14届竞赛)的更多相关文章
- zyb的面试(广工14届比赛)
这道题目在上半年ZOJ模拟上年青岛赛区ACM题的时候就已经出现了.当时我不会写,本来想着赛后补题的最后因为懒惰又没补. 现在这道题又出现了.这是上天对我的惩罚啊!!! 所以这次铁了心也要补这题.然后我 ...
- Android反编译基础(apktoos)--广工图书馆APK
更多精彩内容 :http://www.chenchuangfeng.com QQ:375061590 ------------------------------------------------- ...
- 【HDU6216】 A Cubic number and A Cubic Number 和 广工的加强版
题目传送门_杭电版 题目传送门_广工版 广工版的是杭电版的加强版. 题意:判断一个质数是否是两个整数的立方差 ---- 数学题 题解: 根据立方差公式:\(a^3 - b^3 = (a - b)(a^ ...
- 广工十四届校赛 count 矩阵快速幂
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6470 题意:求,直接矩阵快速幂得f(n)即可 构造矩阵如下: n^3是肯定得变换的,用二项式展开来一点 ...
- 2018湖南省第14届大学生计算机程序设计竞赛 D: 卖萌表情
Description 已知以下 4 种都是卖萌表情(空白的部分可以是任意字符.竖线是便于展示的分隔符,没有实际意义): ^ ^ | ^ | < | > v | v v | > | ...
- 2018湖南省第14届大学生计算机程序设计竞赛 C: 时间旅行
Description 假设 Bobo 位于时间轴(数轴)上 t0 点,他要使用时间机器回到区间 (0, h] 中. 当 Bobo 位于时间轴上 t 点,同时时间机器有 c 单位燃料时,他可以选择一个 ...
- 2018湖南省第14届大学生计算机程序设计竞赛 A字符画
Description 读入 w,请输出 2018 的字符画,两个数字之间有 w 个空格.具体格式请参考样例输出. 1 ≤ w ≤ 2018 Input 输入文件只包含 1 个整数 w. Output ...
- 广工赛-hdu6468构造十叉树
是个以前没见过的模板题.. 我用比较复杂度方式过掉了.. 构造一个十叉树(有点trie的味道)来存数字,然后字典序就是先序遍历的结果 #include<bits/stdc++.h> usi ...
- 广工赛-hdu6469-树链压缩/二分
比较复杂的一题.. 不管是二分答案还是直接做,都需要压缩树链 /* 给定n种怪物,每个怪物有属性a[i] 打死第i种怪物后,第i只怪物会分裂成a[i]个第i-1种怪 如果打死的是第1种,那么获得经验a ...
随机推荐
- sshpass 配置密码登录ssh
tar -zxvf sshpass-1.06.tar.gzcd sshpass-1.06./configuremake && make install sshpass -p userp ...
- MINIUI后台获取数据
1.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEnc ...
- Python2.7编译失败 Failed to build these modules:_curses_panel _hashlib _ssl
1:*** WARNING: renaming "_ssl" since importing it failed: libssl.so.1.0.0: cannot open sha ...
- Linux系统下升级Python版本步骤(suse系统)
Linux系统下升级Python版本步骤(suse系统) http://blog.csdn.net/lifengling1234/article/details/53536493
- TOP100summit:【分享实录-Microsoft】基于Kafka与Spark的实时大数据质量监控平台
本篇文章内容来自2016年TOP100summit Microsoft资深产品经理邢国冬的案例分享.编辑:Cynthia 邢国冬(Tony Xing):Microsoft资深产品经理.负责微软应用与服 ...
- BZOJ 1001 - 狼抓兔子 - [Dinic最大流][对偶图最短路]
题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1001 Description现在小朋友们最喜欢的"喜羊羊与灰太狼", ...
- GregorianCalendar公里类
使用GregorianCalendar 获得日期是年中第几周第几天 public class Common { /// <summary> /// 获取日期是年中的第几周 /// < ...
- [No0000D9]删除指定文件夹.bat改命或合并文件
set /p 目录=目录,拖入= rd /s /q %目录% ::ren *.txt *.html ::copy /B *.html aaa.txt pause
- 关于Java程序流程控制的整理(已完善)
- RuntimeError - [Xcodeproj] Unknown object version.解决方法
wjw:layoutInScrollView username$ pod install Analyzing dependencies xcode-select: error: tool 'xcode ...