第一次独立做矩阵,只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 矩阵的更多相关文章

  1. FZU 1683 纪念SlingShot(矩阵水)

    纪念SlingShot [题目链接]纪念SlingShot [题目类型]矩阵水 &题解: 这代码调了十多分钟,结果是Mul没返回值,好zz啊. 令sum(n)=sum(n-1)+f(n) 那么 ...

  2. 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, ...

  3. fuzhou 1683 纪念SlingShot ***

    Problem 1683 纪念SlingShot Accept: 361    Submit: 1287Time Limit: 1000 mSec    Memory Limit : 32768 KB ...

  4. Foj1683矩阵快速幂水题

    Foj 1683 纪念SlingShot 题目链接:http://acm.fzu.edu.cn/problem.php?pid=1683 题目:已知 F(n)=3 * F(n-1)+2 * F(n-2 ...

  5. 【poj3070】矩阵乘法求斐波那契数列

    [题目描述] 我们知道斐波那契数列0 1 1 2 3 5 8 13…… 数列中的第i位为第i-1位和第i-2位的和(规定第0位为0,第一位为1). 求斐波那契数列中的第n位mod 10000的值. [ ...

  6. C++ 螺旋矩阵算法

    清理磁盘空间的时候翻出了多年前写过的螺旋矩阵,代码效率和水平较低,纪念一下,保存到博客园! // ConsoleApplication3.cpp : 定义控制台应用程序的入口点. // #includ ...

  7. 7.26机房报零赛——无尽的矩阵【kmp+hash】

    恩,其实大家都没有报零,反正我是蒟蒻 为了纪念我第一次打过哈希,特此写一篇题解 题目描述 从前有一个的小矩阵,矩阵的每个元素是一个字母(区分大小写),突然有一天它发生了 变异,覆盖了整个二维空间,即不 ...

  8. 2019中山纪念中学夏令营-Day20[JZOJ] T1旅游详解

    2019中山纪念中学夏令营-Day20[JZOJ] 提高组B组 Team_B组 T1 旅游 Time Limits: 2000 ms  Memory Limits: 262144 KB Descrip ...

  9. C语言 · 矩阵乘法 · 算法训练

    问题描述 输入两个矩阵,分别是m*s,s*n大小.输出两个矩阵相乘的结果. 输入格式 第一行,空格隔开的三个正整数m,s,n(均不超过200). 接下来m行,每行s个空格隔开的整数,表示矩阵A(i,j ...

随机推荐

  1. 【转】研华Adam6060某段时间后无法连接的问题

    配合乙方测试,需连接现场Adam模块.一段时间后发现模块无法连接,网上资料甚少,发现此贴,记录下.以前没有多客户端高频次(其实谈不上高)连接,没有考虑连接释放的问题.另外,官方Demo也没有释放连接. ...

  2. Java—Integer类

    Integer类 Integer 类在对象中包装了一个基本类型 int 的值.Integer 类型的对象包含一个 int 类型的字段. 该类提供了多个方法,能在 int 类型和 String 类型之间 ...

  3. jxl读和取Excel文件

    请参看下面链接: jxl如何读和取excle中的数据

  4. java的LinkedList的用法

    http://blog.chinabyte.com/blog.php?do-showone-uid-135325-itemid-454704-type-blog.html 总结下,LinkedList ...

  5. android启动activity文本框不获得焦点

    在开发中,常常会碰到这种情况,打开一个activity后,第一个文本框自动获得焦点,同时会弹出软键盘输入框,这样很影响用户体验,现在来看解决方法. 我们先来看看为什么会出现上述情况,原因很简单,文本框 ...

  6. Raising Modulo Numbers(POJ 1995 快速幂)

    Raising Modulo Numbers Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 5934   Accepted: ...

  7. Stall Reservations(POJ 3190 贪心+优先队列)

    Stall Reservations Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 4434   Accepted: 158 ...

  8. [TYVJ] P1010 笨小猴

    笨小猴 背景 Background NOIP2008复赛提高组第一题   描述 Description 笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼.但是他找到了一种方法,经试验证明,用这种 ...

  9. poj 2976 Dropping tests

    http://poj.org/problem?id=2976 这道题就是从n个a[i]和b[i]中去掉k个a[i]和[i]使得.最大. #include <cstdio> #include ...

  10. Common Lisp 编译器IDE环境搭建

    搭建Common Lisp编程环境的方法有很多种,这里我使用的是最常见的一种:SBCL + Emacs + SLIME. SBCL是Steel Bank Common Lisp的简称,它是Common ...