博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
斐波那契数列卷积(矩阵快速幂)
阅读量:4332 次
发布时间:2019-06-06

本文共 1814 字,大约阅读时间需要 6 分钟。

斐波那契数列卷积

链接:

来源:牛客网

题目描述

已知数列 an=∑k=0nFn−k×Fka_n=\sum_{k=0}^{n}F_{n-k} \times F_kan=∑k=0nFn−k×Fk ,其中 F 是斐波那契数列,递推式为:

F0=0,F1=1F_0=0,F_1=1F0​=0,F1​=1,满足Fn=Fn−1+Fn−2F_n=F_{n-1}+F_{n-2}Fn​=Fn−1​+Fn−2​,需要求出ana_nan​mod 998244353

输入描述:

一行一个整数 n对于 100% 的数据,满足 1≤n≤10181 \leq n \leq 10^{18}1≤n≤1018

输出描述:

一行一个整数表示答案

示例1

输入

3

输出

2

示例2

输入

19260817

输出

511682927

题解:久违的ac,虽然是看题解a的

题解在这

#include 
typedef long long LL;const LL mod = 998244353;struct node{ LL v[5][5];};//矩阵相乘node get_mul(node a, node b) { node c; for(int i = 0; i < 4; i++) { for(int j = 0; j < 4; j++) { c.v[i][j] = 0; for(int k = 0; k < 4; k++) { c.v[i][j] = (c.v[i][j] % mod + a.v[i][k] % mod * b.v[k][j] % mod) % mod; } } } return c;}int main() { LL n; scanf("%lld", &n); if(n == 1) printf("0\n"); else if(n == 2) printf("1\n"); else if(n == 3) printf("2\n"); else if(n == 4) printf("5\n"); else { LL d[5]; d[0] = 5, d[1] = 2, d[2] = 1; node a, b; a.v[0][0] = 2, a.v[0][1] = 1, a.v[0][2] = 0, a.v[0][3] = 0; a.v[1][0] = 1, a.v[1][1] = 0, a.v[1][2] = 1, a.v[1][3] = 0; a.v[2][0] =-2, a.v[2][1] = 0, a.v[2][2] = 0, a.v[2][3] = 1; a.v[3][0] =-1, a.v[3][1] = 0, a.v[3][2] = 0, a.v[3][3] = 0; \\矩阵b=1 for(int i = 0; i < 4; i++) { for(int j = 0; j < 4; j++) { b.v[i][j] = 0; } b.v[i][i] = 1; } n -= 4; while(n) { if(n&1) b = get_mul(a, b); a = get_mul(a, a); n >>= 1; } LL ans = 0; for(int i = 0; i < 3; i++) ans = (ans % mod + b.v[i][0] * d[i] % mod) % mod; printf("%lld\n",(ans + mod) % mod); } return 0;}

转载于:https://www.cnblogs.com/fanshhh/p/11581815.html

你可能感兴趣的文章
Python 入门笔记
查看>>
解决在eclipse中导入项目名称已存在的有关问题
查看>>
启发式与元启发式算法
查看>>
[转]C# CancellationTokenSource 终止线程
查看>>
校赛热身 Problem B. Matrix Fast Power
查看>>
Android动画解析--XML
查看>>
table布局, td内部元素溢出边界问题。 (已解决)
查看>>
一道递归题
查看>>
语法的省略不能造成编译器的歧义
查看>>
Android SDK目录结构和工具介绍
查看>>
Java 反射详解
查看>>
Java&&As3.0 中的final 关键字
查看>>
Linux常用命令大全
查看>>
修改文件所属组和用户
查看>>
C#登陆界面学习编写 2018.08.03
查看>>
AC日记——Little Elephant and Function codeforces 221a
查看>>
fork
查看>>
heart or house?
查看>>
python学习(三)
查看>>
《C#从现象到本质》读书笔记(八)第10章反射
查看>>