Another kind of Fibonacci

Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 2470    Accepted Submission(s): 987

Problem Description
As we all known , the Fibonacci series : F(0) = 1, F(1) = 1, F(N) = F(N - 1) + F(N - 2) (N >= 2).Now we define another kind of Fibonacci : A(0) = 1 , A(1) = 1 , A(N) = X * A(N - 1) + Y * A(N - 2) (N >= 2).And we want to Calculate S(N) , S(N) = A(0)2 +A(1)2+……+A(n)2.

 
Input
There are several test cases.
Each test case will contain three integers , N, X , Y .
N : 2<= N <= 231 – 1
X : 2<= X <= 231– 1
Y : 2<= Y <= 231 – 1
 
Output
For each test case , output the answer of S(n).If the answer is too big , divide it by 10007 and give me the reminder.
 
Sample Input
2 1 1
3 2 3
 
Sample Output
6
196
 
Author
wyb
 
Source
 
Recommend
wxl   |   We have carefully selected several similar problems for you:  3308 3307 3309 3314 3310 
 
注意:用cin>>输入会时间超限,改用scanf即可。

#include <iostream>
#include <cstdio>

using namespace std;

typedef long long ll;

#define mod 10007

ll n;
ll x;
ll y;

struct matrix
{
 ll v[4][4];
};

matrix mul(matrix m1, matrix m2)
{
 matrix 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] += (m1.v[i][k] * m2.v[k][j]) % mod;
   c.v[i][j] %= mod;
  }
 return c;
}

matrix qupow(matrix A)
{
 n--;
 matrix res = A, m = A;
 while (n)
 {
  if (n & 1)
   res = mul(res, m);
  n >>= 1;
  m = mul(m, m);
 }
 return res;
}

void solve(matrix A)
{
 matrix temp = qupow(A);
 ll ans = 0;
 for (int i = 0; i<4; i++)
  ans += temp.v[i][0]%mod;
    ans%=mod;
    printf("%lld\n",ans);
 //cout << ans << endl;
}

int main()
{
 matrix A;
 ll a, b, c;
 while (~scanf("%lld%lld%lld",&n,&x,&y))
 {
        a = x*x%mod;
  b = y*y%mod;
  c = x*y * 2%mod;
  //matrix A = {  1,0,0,0 ,1,a,1,x,0,b,0,0 0,c,0,y };
  A.v[0][0]=1;
  for(int i=1;i<4;i++)
            A.v[0][i]=0;
        A.v[1][0]=1;
        A.v[1][1]=a%mod;
        A.v[1][2]=1;
        A.v[1][3]=x%mod;
        A.v[2][0]=0;
        A.v[2][1]=b%mod;
        A.v[2][2]=0;
        A.v[2][3]=0;
        A.v[3][0]=0;
        A.v[3][1]=c%mod;
        A.v[3][2]=0;
        A.v[3][3]=y%mod;
  /*for(int i=0;i<4;i++)
            for(int j=0;j<4;j++)
            cin>>A.v[i][j];*/
  solve(A);
 }
 return 0;
}

 
 

Another kind of Fibonacce(矩阵快速幂,HDU3306)的更多相关文章

  1. hdu3306 Another kind of Fibonacci【矩阵快速幂】

    转载请注明出处:http://www.cnblogs.com/KirisameMarisa/p/4187670.html 题目链接:http://acm.hdu.edu.cn/showproblem. ...

  2. 矩阵快速幂 HDU 4565 So Easy!(简单?才怪!)

    题目链接 题意: 思路: 直接拿别人的图,自己写太麻烦了~ 然后就可以用矩阵快速幂套模板求递推式啦~ 另外: 这题想不到或者不会矩阵快速幂,根本没法做,还是2013年长沙邀请赛水题,也是2008年Go ...

  3. 51nod 算法马拉松18 B 非010串 矩阵快速幂

    非010串 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 如果一个01字符串满足不存在010这样的子串,那么称它为非010串. 求长度为n的非010串的个数.(对1e9+7取模) ...

  4. 51nod 1113 矩阵快速幂

    题目链接:51nod 1113 矩阵快速幂 模板题,学习下. #include<cstdio> #include<cmath> #include<cstring> ...

  5. 【66测试20161115】【树】【DP_LIS】【SPFA】【同余最短路】【递推】【矩阵快速幂】

    还有3天,今天考试又崩了.状态还没有调整过来... 第一题:小L的二叉树 勤奋又善于思考的小L接触了信息学竞赛,开始的学习十分顺利.但是,小L对数据结构的掌握实在十分渣渣.所以,小L当时卡在了二叉树. ...

  6. HDU5950(矩阵快速幂)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5950 题意:f(n) = f(n-1) + 2*f(n-2) + n^4,f(1) = a , f(2 ...

  7. 51nod 1126 矩阵快速幂 水

    有一个序列是这样定义的:f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7. 给出A,B和N,求f(n)的值. Input 输 ...

  8. hdu2604(递推,矩阵快速幂)

    题目链接:hdu2604 这题重要的递推公式,找到公式就很easy了(这道题和hdu1757(题解)类似,只是这道题需要自己推公式) 可以直接找规律,推出递推公式,也有另一种找递推公式的方法:(PS: ...

  9. 矩阵乘法&矩阵快速幂&矩阵快速幂解决线性递推式

    矩阵乘法,顾名思义矩阵与矩阵相乘, 两矩阵可相乘的前提:第一个矩阵的行与第二个矩阵的列相等 相乘原则: a b     *     A B   =   a*A+b*C  a*c+b*D c d     ...

随机推荐

  1. 实现标签的添加与删除(tags)

    在项目中会遇到,标签(tags)的添加与去除的需求 demo:我们有 tags   '专利','商标','版权','域名' demand:在发布内容的时候,要求可以添加tag,(实现tag的增加与删除 ...

  2. 使用SharedPreferences存储用户配置信息

    用SharedPreferences来保存用户的基本配置信息非常的方便,实现起来也很容易:以下是一个简单的例子: 效果截图:    主要代码: public class MainActivity ex ...

  3. jquery 基础变量定义

    var $i=$("#D1"); var i=$("#D2"); function(){      //这里获取控件对象值      var d1=$i.val ...

  4. dotNet的体系结构介绍

    一.公共语言运行库 .NET Framework 的核心是其运行库执行环境,称为Common Language Run,通常在CLR控制下运行的代码称为托管代码(由GC进行资源管理和回收),还有一部分 ...

  5. TCP/IP笔记(五)IP协议相关技术

    IP旨在让最终目标主机收到数据包,但是在这一过程中仅仅有IP时无法实现通信的.必须还要又能够解析主机名称和MACdivide功能,以技术包在发送过程中异常情况处理的功能. 这篇主要介绍下DNS.ARP ...

  6. a标签传值乱码问题怎么解?

  7. ARM中断处理过程

    以s3c2440  ARM9核为例: 一:s3c2440 ARM处理器特性: 1.S3C2440支持个中断源,含子中断源: 2.ARM9采用五级流水线方式: 3.支持外部中断和内部中断: 二.s3c2 ...

  8. 从零开始用 Flask 搭建一个网站(二)

    从零开始用 Flask 搭建一个网站(一) 介绍了如何搭建 Python 环境,以及 Flask 应用基本项目结构.我们要搭建的网站是管理第三方集成的控制台,类似于 Slack. 本篇主要讲解数据如何 ...

  9. 关于iOS开发首次进入需要获取地理位置

    今天给大家简单介绍一下iOS开发过程中会遇到的获取地理位置的问题,(话不多说进入正题)这里给大家讲解一下两种在APPdelegate获取地理位置的方法: 一:首先是用系统的方法获取地理位置: 1. 首 ...

  10. mongo数据库基础

    mongodb mongodb特性 分布式文件存储 介与关系数据库和非关系数据库之间 文件存储格式为BSON(一种JSON的扩展) BSON是对二进制格式的JSON的简称,BSON支持文档和数组的嵌套 ...