第一次独立做矩阵,只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. MyBatis调用Oracle的存储过程

    Mapper.xml文件: --------------------------------- <parameterMap type="map" id="class ...

  2. java连接sqL2008 数据库实例

    package com.lzw; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSe ...

  3. OpenCV——识别印刷体数字

    数字识别和其他的所有计算机视觉相关的应用都会分为两个步骤:ROI抽取和识别. 1. ROI抽取即将感兴趣的区域从原始图像中分离初来,这个步骤包括二值化,噪点的消除等2. 识别即通过一些分类器将第一步中 ...

  4. Jquery网页选项卡应用

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  5. TextView之一:子类的常用属性

    TextView常见的子类包括EditText,Button,CheckBox, RadioButton等. 1.EditText EditText继承自TextView,因此TextView所有属性 ...

  6. 使用DatagramSocket与DatagramPacket传输数据

    参考传智播客毕向东JAVA视频. 注: DatagramSocket发送的每个包都需要指定地址,而Socket则是在首次创建时指定地址,以后所有数据的发送都通过此socket. A socket is ...

  7. 写jQuery插件时,一种更好的合并参数的方法

    看到很多人写jQuery插件时居然这样合并参数: this.defaults = { 'color': 'red', 'fontSize': '12px', 'textDecoration':'non ...

  8. Linux 下配置 SoftEther Client

    我经常使用的代理有 SSH, GoAgent, FreeGate, VPN, HttpProxy 等等,不过 SoftEther 应该是我用过的最快.最稳定的 VPN 协议. Windows 下配置 ...

  9. [C++程序设计]用函数指针变量调用函数

    指针变量也可以指向一个函数.一个函数在编译时被分配给一个入口地址.这个函数入口地址就称为函数的指针.可以用一个指针变量指向函数,然后通过该指针变量调用此函数 #include <iostream ...

  10. [转]MySQL 5.6 全局事务 ID(GTID)实现原理(一)

    原文作者:淘长源 原文连接:http://qing.blog.sina.com.cn/1757661907/68c3cad333002qhe.html 转载注明以上信息   MySQL 5.6 的新特 ...