【SSL 1529】 裴波拉契数列IIII【矩阵乘法】

2023-11-10 08:30

本文主要是介绍【SSL 1529】 裴波拉契数列IIII【矩阵乘法】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Time Limit:1000MS Memory Limit:65536K
Total Submit:53 Accepted:41


Description

求数列 f [ n ] = f [ n − 2 ] + f [ n − 1 ] + n + 1 f[n]=f[n-2]+f[n-1]+n+1 f[n]=f[n2]+f[n1]+n+1的第N项,其中 f [ 1 ] = 1 , f [ 2 ] : = 1 f[1]=1,f[2]:=1 f[1]=1,f[2]:=1.


Input

N ( 1 < N < 2 3 1 − 1 ) N(1<N<2^31-1) N(2311)

Output

第n项结果 m o d mod mod 9973 9973 9973


Sample Input

10000

Sample Output

4399


Source

elba


解题思路

矩阵乘法

仿照前例,考虑 1 × 4 1×4 1×4的矩阵 【 f [ n − 2 ] , f [ n − 1 ] , n , 1 】 【f[n-2],f[n-1],n,1】 f[n2],f[n1],n,1,希望求得某4×4的矩阵A,使得此1×4的矩阵乘以A得到矩阵:
【 f [ n − 1 ] , f [ n ] , n + 1 , 1 】 = 【 f [ n − 1 ] , f [ n − 1 ] + f [ n − 2 ] + n + 1 , n + 1 , 1 】 【f[n-1],f[n],n+1,1】=【f[n-1],f[n-1]+f[n-2]+n+1,n+1,1】 f[n1],f[n],n+1,1f[n1],f[n1]+f[n2]+n+1,n+1,1
容易构造出这个 4 × 4 4×4 4×4的矩阵A,即:
在这里插入图片描述


代码

#include<algorithm>
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
const int INF=9973;
long long n;
using namespace std;
struct c{int n,m;int a[10][10];
}A,B,CC;
c operator *(c A,c B){c C;C.n=A.n,C.m=B.m;for(int i=1;i<=C.n;i++)for(int j=1;j<=C.m;j++)C.a[i][j]=0;for(int k=1;k<=A.m;k++){for(int i=1;i<=C.n;i++)for(int j=1;j<=C.m;j++)C.a[i][j]=(C.a[i][j]+(A.a[i][k]*B.a[k][j])%INF)%INF;}	return C;
}
void poww(long long x){if(x==1){B=A;return; }poww(x>>1);B=B*B;if(x&1)B=B*A;}
int main(){scanf("%lld",&n);if(n==1){printf("1");return 0;}A.n=4,A.m=4;A.a[1][1]=0,A.a[1][2]=1,A.a[1][3]=0,A.a[1][4]=0;A.a[2][1]=1,A.a[2][2]=1,A.a[2][3]=0,A.a[2][4]=0;A.a[3][1]=0,A.a[3][2]=1,A.a[3][3]=1,A.a[3][4]=0;A.a[4][1]=0,A.a[4][2]=1,A.a[4][3]=1,A.a[4][4]=1;poww(n-1);CC.n=1,CC.m=4;CC.a[1][1]=1,CC.a[1][2]=1,CC.a[1][3]=3,CC.a[1][4]=1;CC=CC*B;printf("%d\n",CC.a[1][1]);}

这篇关于【SSL 1529】 裴波拉契数列IIII【矩阵乘法】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/381531

相关文章

hdu 4565 推倒公式+矩阵快速幂

题意 求下式的值: Sn=⌈ (a+b√)n⌉%m S_n = \lceil\ (a + \sqrt{b}) ^ n \rceil\% m 其中: 0<a,m<215 0< a, m < 2^{15} 0<b,n<231 0 < b, n < 2^{31} (a−1)2<b<a2 (a-1)^2< b < a^2 解析 令: An=(a+b√)n A_n = (a +

hdu 6198 dfs枚举找规律+矩阵乘法

number number number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Description We define a sequence  F : ⋅   F0=0,F1=1 ; ⋅   Fn=Fn

消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法

消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法   消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法 [转载]原地址:http://blog.csdn.net/x605940745/article/details/17911115 消除SDK更新时的“

Android逆向(反调,脱壳,过ssl证书脚本)

文章目录 总结 基础Android基础工具 定位关键代码页面activity定位数据包参数定位堆栈追踪 编写反调脱壳好用的脚本过ssl证书校验抓包反调的脚本打印堆栈bilibili反调的脚本 总结 暑假做了两个月的Android逆向,记录一下自己学到的东西。对于app渗透有了一些思路。 这两个月主要做的是代码分析,对于分析完后的持久化等没有学习。主要是如何反编译源码,如何找到

线性代数|机器学习-P35距离矩阵和普鲁克问题

文章目录 1. 距离矩阵2. 正交普鲁克问题3. 实例说明 1. 距离矩阵 假设有三个点 x 1 , x 2 , x 3 x_1,x_2,x_3 x1​,x2​,x3​,三个点距离如下: ∣ ∣ x 1 − x 2 ∣ ∣ 2 = 1 , ∣ ∣ x 2 − x 3 ∣ ∣ 2 = 1 , ∣ ∣ x 1 − x 3 ∣ ∣ 2 = 6 \begin{equation} ||x

【线性代数】正定矩阵,二次型函数

本文主要介绍正定矩阵,二次型函数,及其相关的解析证明过程和各个过程的可视化几何解释(深蓝色字体)。 非常喜欢清华大学张颢老师说过的一段话:如果你不能用可视化的方式看到事情的结果,那么你就很难对这个事情有认知,认知就是直觉,解析的东西可以让你理解,但未必能让你形成直觉,因为他太反直觉了。 正定矩阵 定义 给定一个大小为 n×n 的实对称矩阵 A ,若对于任意长度为 n 的非零向量 ,有 恒成

python科学计算:NumPy 线性代数与矩阵操作

1 NumPy 中的矩阵与数组 在 NumPy 中,矩阵实际上是一种特殊的二维数组,因此几乎所有数组的操作都可以应用到矩阵上。不过,矩阵运算与一般的数组运算存在一定的区别,尤其是在点积、乘法等操作中。 1.1 创建矩阵 矩阵可以通过 NumPy 的 array() 函数创建。矩阵的形状可以通过 shape 属性来访问。 import numpy as np# 创建一个 2x3 矩阵mat

828华为云征文|基于Flexus云服务器X实例的应用场景-拥有一款自己的ssl监控工具

先看这里 写在前面效果图华为云Flexus云服务器X实例介绍特点可选配置购买 连接服务器Uptime-kuma简介开源信息部署准备工作:docker部署命令访问uptime-kuma 基本配置总结 写在前面 作为一个个人开发者,相信你手里肯定也有不少自己的服务,有的服务呢也是https的。 以前ssl各厂都是可以免费申请一年的,我们更换的频率还好,比较小;但是最近,各厂都

UVa 10820 Send a Table (Farey数列欧拉函数求和)

这里先说一下欧拉函数的求法 先说一下筛选素数的方法 void Get_Prime(){ /*筛选素数法*/for(int i = 0; i < N; i++) vis[i] = 1;vis[0] = vis[1] = 0;for(int i = 2; i * i < N; i++)if(vis[i]){for(int j = i * i; j < N; j += i)vis[j] =

【UVA】10003-Cutting Sticks(动态规划、矩阵链乘)

一道动态规划题,不过似乎可以用回溯水过去,回溯的话效率很烂的。 13988658 10003 Cutting Sticks Accepted C++ 1.882 2014-08-04 09:26:49 AC代码: #include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include