## 题目大意

$$F[i]=F[i-1]+F[i-2]\ (\ F[1]=1\ ,\ F[2]=1\ )$$

$$T[i]=F[1]+2F[2]+3F[3]+...+nF[n]$$

$n,m<=2^{31}-1$

## 题解

$$F[i]=F[i-1]+F[i-2]\ (\ F[1]=1\ ,\ F[2]=1\ )$$

$$T[i]=F[1]+2F[2]+3F[3]+...+nF[n]$$

$$nS[i]=nF[1]+nF[2]+nF[3]+...+nF[n]$$

\begin{align*}
p[i]&=nS[i]-T[i]\\
&=(n-1)F[1]+(n-2)F[2]+...+F[n]\\
&=p[i-1]+s[i-1]
\end{align*}

$$p[i]=p[i-1]+s[i-1]$$

$$\left[ \begin {matrix} p[i]\\ S[i]\\ F[i]\\ F[i-1] \end {matrix} \right] * \left[ \begin{matrix} 1&1&0&0\\ 0&1&1&0\\ 0&0&1&1\\ 0&0&1&0 \end{matrix} \right] = \left[ \begin{matrix} p[i+1]\\ S[i+1]\\ F[i+1]\\ F[i] \end{matrix} \right]$$

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cstdlib>
#include <iostream>
#include <vector>
#include <cmath>
#include <set>
#include <map>

using namespace std ;

#define I_int int
I_int x =  , f =  ; char c = getchar() ;
while( c < '' || c > '' ) {
if( c == '-' ) f = - ;
c = getchar() ;
}
while( c >= '' && c <= '' ) {
x = x *  + c -'' ;
c = getchar() ;
}
return x * f ;
}
#undef I_int

#define ll long long
#define inf 0x3f3f3f3f
#define out(a) printf( "%d " , a )
#define outn(a) printf( "%d\n" , a )
#define N 100010

ll mod ;
struct matrix {
ll m[  ][  ] ;
matrix() { memset( m ,  , sizeof( m ) ) ; }
ll *operator[] ( ll a ) { return m[ a ] ; }
matrix operator * ( matrix &x ) {
matrix ans ;
memset( ans.m ,  , sizeof( ans.m ) ) ;
for( int i =  ; i <  ; i ++ ) {
for( int j =  ; j <  ; j ++ ) {
for( int k =  ; k <  ; k ++ ) {
ans[ i ][ j ] = ( ans[ i ][ j ] + m[ i ][ k ] * x[ k ][ j ] % mod ) % mod ;
}
}
}
return ans ;
}
} A , B ;

void init() {
A[][]=A[][]=A[][]=A[][]=A[][]=A[][]=A[][]=;
B[][]=B[][]=B[][]=;
}

matrix power( ll p ) {
matrix ans , base = A ;
for( int i =  ; i <  ; i ++ ) ans[ i ][ i ] =  ;
while( p ) {
if( p &  ) ans = ans * base ;
base = base * base ;
p >>=  ;
}
return ans ;
}

int main() {
scanf( "%lld" , &mod ) ;
init() ;
A = power( n -  ) ;
matrix ans = A * B ;
printf( "%lld\n" , (n*ans[][]-ans[][]+mod)%mod ) ;
}

## LOJ #10222. 「一本通 6.5 例 4」佳佳的 Fibonacci的更多相关文章

1. LOJ#10064. 「一本通 3.1 例 1」黑暗城堡

LOJ#10064. 「一本通 3.1 例 1」黑暗城堡 题目描述 你知道黑暗城堡有$N$个房间,$M$条可以制造的双向通道,以及每条通道的长度. 城堡是树形的并且满足下面的条件: 设$D_i$为如果 ...

2. LOJ #10131 「一本通 4.4 例 2」暗的连锁

LOJ #10131 「一本通 4.4 例 2」暗的连锁 给一棵 $$n$$ 个点的树加上 $$m$$ 条非树边 , 现在需要断开一条树边和一条非树边使得图不连通 , 求方案数 . $n \le 10 ... 3. Loj 10115 「一本通 4.1 例 3」校门外的树 (树状数组) 题目链接:https://loj.ac/problem/10115 题目描述 原题来自:Vijos P1448 校门外有很多树,学校决定在某个时刻在某一段种上一种树,保证任一时刻不会出现两段相同种类的 ... 4. LOJ#10065. 「一本通 3.1 例 2」北极通讯网络 题目链接:https://loj.ac/problem/10065 题目描述 原题来自:Waterloo University 2002 北极的某区域共有 nnn 座村庄,每座村庄的坐标用一对整数 ( ... 5. LOJ#10106. 「一本通 3.7 例 2」单词游戏 题目链接:https://loj.ac/problem/10106 题目描述 来自 ICPC CERC 1999/2000,有改动. 有 NNN 个盘子,每个盘子上写着一个仅由小写字母组成的英文单词. ... 6. LOJ #10132. 「一本通 4.4 例 3」异象石 题目地址 LOJ 题解 神仙思路.思路参考自<算法竞赛进阶指南>. 考虑维护dfs序中相邻两个石头的距离,那么每次?的答案就是sum/2(首尾算相邻) 然后维护一下拿个平衡树/set维护一 ... 7. LOJ 10138 -「一本通 4.5 例 1」树的统计 树链剖分模板题,详见这篇博客. 8. LOJ 10155 - 「一本通 5.2 例 3」数字转换 前言 从现在开始,这个博客要写一些题解了.起初,开这个博客只是好玩一样,没事就写写CSS.JS,然后把博客前端搞成了现在这个样子.以前博客只是偶尔记录一些东西,刷题也从来不记录,最近受一些学长的影响, ... 9. loj #10001. 「一本通 1.1 例 2」种树 题面 解题思路 贪心,首先按右端点排序,然后从小往大扫,因为要求树最少,所以要尽量放在右端点.然后开个bool数组判断是否种过树即可. 代码 #include<iostream> #inc ... ## 随机推荐 1. AlwaysOn 同步时间的测试 背景 <SQL Server 2012实施与管理实战指南>中指AlwaysON同步过程如下: 任何一个SQL Server里都有个叫Log Writer的线程,当任何一个SQL用户提交一个 ... 2. The &quot;get&quot; method should be used when the form is idempotent---正交的两个概念--- https://www.w3.org/TR/REC-html40/interact/forms.html#h-17.13.1 17.13.1 Form submission method The me ... 3. PS之火焰铁锈字 效果图 素材一:将下图在PS中打开,选择菜单:编辑>定义图案,命名后关闭图案 素材二 1.新建如下画布 2.将素材二拖入新建好的画布(使用移动工具) 3.先将文字图层复制4次(ctrl+J)并且 ... 4. JSON C# Class Generator是一个从JSON文本中生成C#内的应用程序 JSON C# Class Generator是一个从JSON文本中生成C#内的应用程序 .NET平台开源项目速览(18)C#平台JSON实体类生成器JSON C# Class Generator ... 5. 50个很棒的Python模块 50个很棒的Python模块 我很喜欢Python,Python具有强大的扩展能力,我列出了50个很棒的Python模块,包含几乎所有的需要:比如Databases,GUIs,Images, Soun ... 6. cocos2dx lua中异步加载网络图片，可用于显示微信头像 最近在做一个棋牌项目,脚本语言用的lua,登录需要使用微信登录,用户头像用微信账户的头像,微信接口返回的头像是一个url,那么遇到的一个问题就是如何在lua中异步加载这个头像,先在引擎源码里找了下可能 ... 7. python访问redis python访问redis 1 Linux上安装redis a) 下载$ wget http://download.redis.io/releases/redis-3.0.5.tar.gz b) 编 ...

8. 洛谷P1880 石子合并

经典水题....... 断环为链长度乘二,求前缀和区间DP. #include <cstdio> #include <cstring> #include <algorit ...

9. String的intern()方法详解

https://blog.csdn.net/soonfly/article/details/70147205  :图解 https://blog.csdn.net/wjzhang5514/articl ...

10. 最小生成树二&#183;Kruscal算法

描述 随着小Hi拥有城市数目的增加,在之间所使用的Prim算法已经无法继续使用了——但是幸运的是,经过计算机的分析,小Hi已经筛选出了一些比较适合建造道路的路线,这个数量并没有特别的大. 所以问题变成 ...