Loj10222佳佳的 Fibonacci
Description


Analysis
10分:暴力+把m和n输反,你将获得10分的好成绩(Just like me.)
70分:暴力+把m和n输对,你将获得70分的好成绩
100分:矩阵加速
设
$ T(n)=1F_1+2F_2+3F_3+......+nF_n $
\(S(n)=F_1+F_2+F_3+......+F_n\)
则有:
\(n*S(n)-T(n)=(n-1)*F_1+(n-2)*F_2+(n-3)*F_3+......+1*F_{n-1}\)
移项可得
\(T(n)=n*S(n)-(n-1)*F_1+(n-2)*F_2+(n-3)*F_3+......+1*F_{n-1}\)
客官且慢,观察可以发现
\((n-1)*F_1+(n-2)*F_2+(n-3)*F_3+......+1*F_{n-1}\)
不就是S(1)~S(n-1)的前缀和么
所以再设
\(G(n)=G(n-1)+S(n)\)
但一项一项来太慢了
用矩阵加速吧
于是设矩阵
\([F(n-1),F(n),S(n),G(n)]\)
转移矩阵自然出来了
\([0,1,1,1]\)
\([1,1,1,1]\)
\([0,0,1,1]\)
\([0,0,0,1]\)
差一点就成阶梯矩阵了呢
So:
70:
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll n,mod,now,ans=3,a=1,b=1;
int main(){
cin>>n>>mod;
if(n==1){cout<<1%mod;return 0;}
if(n==2){cout<<3%mod;return 0;}
for(register int i=3;i<=n;++i){
now=(a+b)%mod;
a=b,b=now,ans=(ans+i%mod*now%mod)%mod;
}
cout<<ans;
return 0;
}
100:
#include<cstdio>
#include<cstring>
#define re register
#define in inline
#define int long long
in int read()
{
int s(0),b(0);char ch;
do{ch=getchar();if(ch=='-')b=-1;}while(ch<'0'||ch>'9');
while(ch>='0'&&ch<='9') s=(s<<3)+(s<<1)+(ch^48),ch=getchar();
return b?-s:s;
}
int n,m;
struct mat{
int v[5][5];
mat operator*(const mat &t)const
{
mat c;
memset(c.v,0,sizeof(c.v));
for(re int i=1;i<=4;++i)
for(re int j=1;j<=4;++j)
for(re int k=1;k<=4;++k)
c.v[i][j]=(c.v[i][j]+v[i][k]*t.v[k][j]%m)%m;
return c;
}
}I,S,T;
in mat ksm(mat ba,int k)
{
mat ans=I;
while(k)
{
if(k&1) ans=ans*ba;
k>>=1;
ba=ba*ba;
}
return ans;
}
signed main()
{
n=read(),m=read();
I.v[1][1]=I.v[2][2]=I.v[3][3]=I.v[4][4]=1;
S.v[1][1]=S.v[1][2]=S.v[1][3]=S.v[1][4]=1;
T.v[1][1]=T.v[2][1]=T.v[2][2]=T.v[3][1]=T.v[3][2]=T.v[3][3]=T.v[3][4]=T.v[4][3]=1;
if(n==1){
printf("%lld\n",1ll%m);
return 0;
}
S=S*ksm(T,n-2);
int pn1=S.v[1][1];
S=S*T;
printf("%lld\n",(n%m*S.v[1][2]%m-pn1+m)%m);
return 0;
}
Loj10222佳佳的 Fibonacci的更多相关文章
- 佳佳的Fibonacci
#include<cstdio> #include<cstring> #include<iostream> #include<cmath> #inclu ...
- 一本通1644【例 4】佳佳的 Fibonacci
1644:[例 4]佳佳的 Fibonacci 时间限制: 1000 ms 内存限制: 524288 KB sol:搞了大概一个多小时什么结果都没,被迫去看题解,感觉自己菜到家了qaq ...
- 佳佳的 Fibonacci
佳佳的 Fibonacci \(f_n=f_{n-1}+f_{n-2},f_1=f_2=1\),求\(f_1+2f_2+3f_3+...+nf_nmod\ m,1≤n,m≤2^{31}-1\). 解 ...
- TYVJ P3407 佳佳的魔法照片 Label:语文很重要 语文很重要 语文很重要
描述 佳佳的魔法照片(mphoto.pas\c\cpp) [题目背景] 佳佳的魔法照片(Magic Photo):如果你看过<哈利•波特>,你就会知道魔法世界里的照片是很神奇的.也许是因为 ...
- vijosP1285 佳佳的魔法药水
vijosP1285 佳佳的魔法药水 链接:https://vijos.org/p/1285 [思路] 图论思想. 很巧妙. 如A+B=C,将AB之间连边,边权为C,用以找相连物品与合成物. 用Dij ...
- 【DFS】佳佳的魔法阵
[vijos1284]佳佳的魔法阵 背景 也许是为了捕捉猎物(捕捉MM?),也许是因为其它原因,总之,佳佳准备设计一个魔法阵.而设计魔法阵涉及到的最关键问题,似乎就是那些带有魔力的宝石的摆放…… 描述 ...
- P1875 佳佳的魔法药水
P1875 佳佳的魔法药水 题目描述 发完了 k 张照片,佳佳却得到了一个坏消息:他的 MM 得病了!佳佳和大家一样焦急 万分!治好 MM 的病只有一种办法,那就是传说中的 0 号药水 ……怎么样才能 ...
- vijos:P1285佳佳的魔法药水
背景 发完了k张照片,佳佳却得到了一个坏消息:他的MM得病了!佳佳和大家一样焦急万分!治好MM的病只有一种办法,那就是传说中的0号药水……怎么样才能得到0号药水呢?你要知道佳佳的家境也不是很好,成本得 ...
- 洛谷 P1875 佳佳的魔法药水
P1875 佳佳的魔法药水 题目描述 发完了 k 张照片,佳佳却得到了一个坏消息:他的 MM 得病了!佳佳和大家一样焦急 万分!治好 MM 的病只有一种办法,那就是传说中的 0 号药水 --怎么样才能 ...
- 洛谷—— P1875 佳佳的魔法药水
https://www.luogu.org/problemnew/show/1875 题目背景 发完了 k 张照片,佳佳却得到了一个坏消息:他的 MM 得病了!佳佳和大家一样焦急 万分!治好 MM 的 ...
随机推荐
- 009 Python基本图形绘制
目录 一.概论 二.方法论 三.实践能力 一.概论 深入理解Python语言 实例2: Python蟒蛇绘制 模块1: turtle库的使用 turtle程序语法元素分析 二.方法论 Python语言 ...
- asp.netcore2.1 IIS部署发布
下载SDK .net core2.1 SDK下载地址:https://www.microsoft.com/net/download 创建Demo项目 打开 powershell 新建项目 dotnet ...
- 网关高可用之keepavlived全流程(安装/配置/验证/解析)
1.场景描述 因为要做网关的高可用,用到了keepalived+nginx,来保证nginx的高可用.(微服务时代之网关及注册中心高可用架构设计),如下图: 安装了keepavlived,走了一些弯路 ...
- [Pandas] 06 - Data Preprocessing and Cleaning
From: DBWangGroup 基于该系列代码的实践与补充思考. 补充:特征工程 结合:[Scikit-learn] 4.3. Preprocessing data /* implement */
- 接口测试时如何选择Encoding(针对请求数据内包含中文)
如果请求数据中包含中文,需要将Encoding选择为utf-8
- 基于 HTML5 WebGL 的垃圾分类系统
前言 垃圾分类,一般是指按一定规定或标准将垃圾分类储存.分类投放和分类搬运,从而转变成公共资源的一系列活动的总称.分类的目的是提高垃圾的资源价值和经济价值,力争物尽其用.垃圾在分类储存阶段属于公众的私 ...
- 利用Helm简化Kubernetes应用部署(1)
目录 利用Helm简化Kubernetes应用部署 Helm基础 安装Helm 使用Visual Studio 2019为Helm编写一个简单的应用 利用Helm简化Kubernetes应 ...
- 一个原生JS实现的不太成熟的贪吃蛇游戏
一个初初初初级前端民工 主要是记录一下写过的东西,复习用 大佬们如果看到代码哪里不符合规范,或者有更好写法的,欢迎各位批评指正 十分感谢 实现一个贪吃蛇游戏需要几步? 1.有地图 2.有蛇 3.有食物 ...
- html 试题试卷(包含latex)下载成word - - java
html 试题试卷(包含latex)下载成word 主要目的: 分享将带latex的html格式的试题试卷以word的格式下载,并且加一些灵活的排版样式 接受群众的检阅,获得反馈 骗取打赏,或者git ...
- [WP8.1]RSA 使用BouncyCastle 公钥解密
写应用的时候遇到个服务器返回私钥加密过的数据 ,然后要在客户端用公钥解密的需求 ,一直没找到方法,应用搁置了一个学期,多方搜索,结论就是.net没有实现公钥解密的方法,要自己实现,于是硬着头皮开始看 ...