西南民大oj(矩阵快速幂)
我的名字不可能那么难记
总提交 : 16 测试通过 : 9
描述
Nirvava:Hi,Misaki,听说ZC要离开了..
Misaki:好走不送,祝一帆风顺…
Nirvana: 但他留了好多doge给我们…
Misaki:……
Nirvana:而且他们还有名字,名字如下。
据说ZC离去的原因之一就是因为第N个doge老是问他能不能记住它的名字。
Misaki:记别人名字什么的,好烦哒,ZC肯定记不住。
Nirvana:ZC当然记得,毕竟是他的宠物嘛。难倒他的是,doge的第二个问题:我的名字有多长。ZC难住了,因为他数着数着就doge精神污染了。
Misaki:这个问题,,真的好难..不过,,他们应该能解决。
PS:这个题面是不是有点熟♂悉,懒得想题面了,就把以前的题面拿出来了。
输入
多组输入
每组一个N(0<N<=10^9)
输出
第N个doge的名字有多长,由于可能太长,你只需要输出长度%1000000007(1e9+7)的结果即可。
样例输入
1
2
3
4
500
样例输出
1
3
7
17
875025602
提示
#include <cstdio> #include <cstring> #include <cmath> #include <iostream> #include <algorithm> #include <queue> #include <cstdlib> #include <stack> #include <vector> #include <set> #include <map> #define LL long long #define mod 1000000007 #define inf 0x3f3f3f3f #define N 1000010 using namespace std; struct matrix {LL m[3][3]; }; LL n; matrix mult(matrix a,matrix b) {matrix c;memset(c.m,0,sizeof(c.m));for(int i=0;i<3;i++)for(int k=0;k<3;k++){if(a.m[i][k]==0)continue;for(int j=0;j<3;j++){if(b.m[k][j]==0)continue;c.m[i][j]+=a.m[i][k]*b.m[k][j]%mod;c.m[i][j]%=mod;}}return c; } matrix quickmod(matrix a,LL n) {matrix temp;memset(temp.m,0,sizeof(temp.m));for(int i=0;i<3;i++)temp.m[i][i]=1;while(n){if(n&1)temp=mult(temp,a);a=mult(a,a);n>>=1;}return temp; }int main() {while(scanf("%lld",&n)!=EOF){if(n==1){puts("1");continue;}matrix ans;memset(ans.m,0,sizeof(ans.m));ans.m[0][0]=0;ans.m[0][1]=0;ans.m[0][2]=0;ans.m[1][0]=3;ans.m[1][1]=2;ans.m[1][2]=1;ans.m[2][0]=1;ans.m[2][1]=1;ans.m[2][2]=0;ans=quickmod(ans,n-1);printf("%lld\n",ans.m[1][0]);} }
View Code
转载于:https://www.cnblogs.com/lienus/p/4189904.html
西南民大oj(矩阵快速幂)相关推荐
- CCPC-Wannafly Comet OJ 夏季欢乐赛(2019)E.飞行棋(期望dp+矩阵快速幂)
题目 飞行棋的规则如下: 1.每名玩家有一个棋子,每个回合可以掷一次骰子. 2.如果使用的骰子为 k面,则这 k面上的点数分别为 1,2,3,-,k,且掷得每种点数的概率均为. 3.如果当前回合掷得 ...
- 矩阵快速幂 | 北邮OJ | 96. 矩阵幂
https://vpn.bupt.edu.cn/http/10.105.242.80/problem/p/96/ reference: https://www.cnblogs.com/cmmdc/p/ ...
- c语言求佩尔方程的解设计思路,c语言版 佩尔方程求最小正整数解及第k解(矩阵快速幂)...
佩尔方程讲解连接: 若一个丢番图方程具有以下的形式: 且 为正整数,则称此方程为佩尔方程(英文:Pell's equation 德文:Pellsche Gleichung) 若 是完全平方数,则这个方 ...
- D: Starry的神奇魔法(矩阵快速幂)
题目链接:https://oj.ismdeep.com/contest/Problem?id=1284&pid=3 D: Starry的神奇魔法 Time Limit: 1 s Me ...
- 快速幂或者矩阵快速幂
快速幂或者矩阵快速幂在算大指数次方时是很高效的,他的基本原理是二进制,下面的A可以是一个数也可以是一个矩阵(本文特指方阵),若是数就是快速幂算法,若是矩阵就是矩阵快速幂算法,用c++只需把矩阵设成一个 ...
- 快速幂 + 矩阵快速幂
快速幂 1 #include<iostream> 2 #include<algorithm> 3 #include<cstring> 4 #define LL lo ...
- [HNOI2008]GT考试[矩阵快速幂+kmp优化的dp]
解题思路:假如说我们用f[i]表示长度为i的串能组合成无不吉利数字的组合的个数的话我们无法找到f[i]和f[i+1]的关系,就是我们下一位填某个数字会不会出现不吉利串,这就和你前面的串末尾于不吉利串重 ...
- HDU4549 M斐波那契数列(矩阵快速幂+费马小定理)
Problem Description M斐波那契数列F[n]是一种整数数列,它的定义如下: F[0] = a F[1] = b F[n] = F[n-1] * F[n-2] ( n > 1 ) ...
- 51nod 算法马拉松18 B 非010串 矩阵快速幂
51nod 算法马拉松18 B 非010串 矩阵快速幂 非010串 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 如果一个01字符串满足不存在010这样的子串,那么称它为非010串 ...
最新文章
- sgdisk 磁盘操作命令
- 初识redis(redis基础命令)
- DataFrame表样式设置(二)
- 电路常识性概念(2)-电容
- 【 Date 对象 参考手册】
- c ++查找字符串_C ++结构| 查找输出程序| 套装1
- 荣耀老熊科普荣耀9X升降全面屏 一升一降皆是技术的沉淀
- libvirt-virsh命令
- POJ - 2485(最小生成树.prime)
- 因服务器配置不当,热门直播平台 Twitch 的125GB 数据和源代码被泄露
- L1-065 嫑废话上代码 (5 分)-PAT 团体程序设计天梯赛 GPLT
- java 监听端口_java游戏服务器检查报告(经验分享)
- HTML:让img标签和input标签水平对齐一样高
- 目录 1. 管理的门槛	1 1.1. 资历作为一个年龄效应	1 1.2. 高层次知识结构的构建与提升 系统层面及战略层面的问题时	1 2. ,一类是绝对年龄效应,另一类是相对年龄效应。	1 2.1.
- 毕业设计——英文文献下载
- 使用TortoiseGit处理冲突亲测
- 计算机操作系统-1-总览
- deepin驱动精灵_深度Linux Deepin系统安装教程使用体验
- sandisk主控量产工具_[转载]群联PS3109主控固态硬盘修复教程_固态修复案例方法...
- 利用Python实现scissors-rock-paper-lizard-Spock小游戏