纪念SlingShot 矩阵
第一次独立做矩阵,只WA了一次,好高兴~~
题意:已知 F(n)=3 * F(n-1)+2 * F(n-2)+7 * F(n-3),n>=3,其中F(0)=1,F(1)=3,F(2)=5,对于给定的每个n,输出F(0)+ F(1)+ …… + F(n) mod 2009。
S(n) = F(0)+F(1)+...+F(n),
S(n) = S(n-1)+F(n);
S(n) = S(n-1)+3*F(n-1)+2*F(n-2)+7*F(n-3).
由上面的式子可以得出矩阵
|1,0,0,0|n-2
|3,3,1,0|
{S(n),F(n),F(n-1),F(n-2)} |2,2,0,1| = {S(2),F(2),F(1),F(0)}
|7,7,0,0|
得出矩阵就好办了~~
#include<stdio.h>
#include<string.h> struct mat{
int f[][];
mat()
{
for(int i=;i<;i++)
for(int j=;j<;j++)
f[i][j]=;
}
};
const int mod = ; mat mul(mat a,mat b)
{
mat ret;
for(int i=;i<;i++)
for(int j=;j<;j++)
for(int k=;k<;k++)
ret.f[i][j]=(ret.f[i][j]+a.f[i][k]*b.f[k][j])%mod;
return ret;
}
mat mat_Pow(mat a,int n)
{
mat e;
e.f[][]=e.f[][]=e.f[][]=e.f[][]=; while(n)
{
if(n&) e=mul(e,a);
a=mul(a,a);
n>>=;
}
return e;
} int b[]={,,};
int main()
{
int m,T,cas=;
scanf("%d",&T);
while(T--)
{
scanf("%d",&m);
if(m<=)
{
printf("Case %d: %d\n",cas++,b[m]);
continue;
}
mat res;
res.f[][]=;res.f[][]=;res.f[][]=;res.f[][]=;
res.f[][]=;res.f[][]=;res.f[][]=;
res.f[][]=;res.f[][]=;
mat ans = mat_Pow(res,m-);
int aans = (ans.f[][]*+ans.f[][]*+ans.f[][]*+ans.f[][])%mod;
printf("Case %d: %d\n",cas++,aans);
}
return ;
}
纪念SlingShot 矩阵的更多相关文章
- FZU 1683 纪念SlingShot(矩阵水)
纪念SlingShot [题目链接]纪念SlingShot [题目类型]矩阵水 &题解: 这代码调了十多分钟,结果是Mul没返回值,好zz啊. 令sum(n)=sum(n-1)+f(n) 那么 ...
- FOJ 1683 纪念SlingShot(矩阵快速幂)
C - 纪念SlingShot Description 已知 F(n)=3 * F(n-1)+2 * F(n-2)+7 * F(n-3),n>=3,其中F(0)=1,F(1)=3,F(2)=5, ...
- fuzhou 1683 纪念SlingShot ***
Problem 1683 纪念SlingShot Accept: 361 Submit: 1287Time Limit: 1000 mSec Memory Limit : 32768 KB ...
- Foj1683矩阵快速幂水题
Foj 1683 纪念SlingShot 题目链接:http://acm.fzu.edu.cn/problem.php?pid=1683 题目:已知 F(n)=3 * F(n-1)+2 * F(n-2 ...
- 【poj3070】矩阵乘法求斐波那契数列
[题目描述] 我们知道斐波那契数列0 1 1 2 3 5 8 13…… 数列中的第i位为第i-1位和第i-2位的和(规定第0位为0,第一位为1). 求斐波那契数列中的第n位mod 10000的值. [ ...
- C++ 螺旋矩阵算法
清理磁盘空间的时候翻出了多年前写过的螺旋矩阵,代码效率和水平较低,纪念一下,保存到博客园! // ConsoleApplication3.cpp : 定义控制台应用程序的入口点. // #includ ...
- 7.26机房报零赛——无尽的矩阵【kmp+hash】
恩,其实大家都没有报零,反正我是蒟蒻 为了纪念我第一次打过哈希,特此写一篇题解 题目描述 从前有一个的小矩阵,矩阵的每个元素是一个字母(区分大小写),突然有一天它发生了 变异,覆盖了整个二维空间,即不 ...
- 2019中山纪念中学夏令营-Day20[JZOJ] T1旅游详解
2019中山纪念中学夏令营-Day20[JZOJ] 提高组B组 Team_B组 T1 旅游 Time Limits: 2000 ms Memory Limits: 262144 KB Descrip ...
- C语言 · 矩阵乘法 · 算法训练
问题描述 输入两个矩阵,分别是m*s,s*n大小.输出两个矩阵相乘的结果. 输入格式 第一行,空格隔开的三个正整数m,s,n(均不超过200). 接下来m行,每行s个空格隔开的整数,表示矩阵A(i,j ...
随机推荐
- QSS 样式表 (一)
在开发应用程序时,往往对界面的美观有一定的要求.Qt 引入了 QSS 机制,使得界面的美化工作变的轻轻松松.嗯,QSS听着有点耳熟.是的,QSS的语法和CSS类似.在此做些总结. 先来看一个简单的例子 ...
- 何时可以开启透明数据加密(TDE)?
TDE可以为我们的数据库提供加密保护,但是,不是任何情况下都可以随意开启TDE的,同时开启TDE后,我们的数据库维护管理工作也需要进行一些调整. 下面我们就先看看开启TDE需要的条件吧! 无法正常开启 ...
- html5增强元素--续
progress元素使用例子 <script> ; function progress_demo() { ) { i++; updateProgress(i); setTimeout(pr ...
- CI(CodeIgniter)学习第二讲
一.CI的文件结构: 了解CI的文件结构可以帮助我们快速的对CI框架有一个整体的认识,就好像我们去了一个陌生的城市一样,对你来讲周围的一切都是陌生和未知的,要想快速的了解这座城市,你可以买一张这座城市 ...
- jQuery中$.proxy()的原理和使用
jQuery.proxy(),接受一个函数,然后返回一个新函数,并且这个新函数始终保持了特定的上下文(context )语境. jQuery.proxy( function, context ) fu ...
- js中得call()方法和apply()方法的用法
方法定义 call方法: 语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象. 说明: call 方 ...
- jQuery插件之jqzoom
jqzoom是一款基于jQuery的图片方法插件. 使用方法:1.引入jQuery与jqzoom,jqzoom.css 2.准备两张一大一小大小相同的图片,小图片放在<img>标签的&qu ...
- Valid Anagram 解答
Question Given two strings s and t, write a function to determine if t is an anagram of s. For examp ...
- ASP.NET中连接数据库的各种方法
ASP.NET中连接数据库的各种方法 连接SQL数据库的方法:(一).在Web.Config中创建连接字符串:1.<add name="ConnectionString" c ...
- qt获取本机网络信息
networkinformation.h #include<QtGui/QWidget> #include<QLabel> #include<QPushButton> ...