3969 [Mz]平方和

 时间限制: 1 s
 空间限制: 64000 KB
 题目等级 : 大师 Master
 查看运行结果
 
 
题目描述 Description

斐波那契数列:f[0]=0,f[1]=1,f[i]=f[i-1]+f[i-2](i>1)

求f[1]*f[1]+f[2]*f[2]+...+f[n]*f[n]的值

输入描述 Input Description

仅一行,一个正整数n

输出描述 Output Description

仅一行一个数,即所求的值,由于结果可能很大,需对1,000,000,007取模

样例输入 Sample Input

3

样例输出 Sample Output

6

数据范围及提示 Data Size & Hint

对于100‰的数据,n<=1,000,000=10^6

然而:

对于200‰的数据,n<=9,000,000,000,000,000,000=9*10^18

对于500‰的数据,n<=10^500

对于1000‰的数据,n<=10^50000

分类标签 Tags 点此展开

引理1:

  平方求和

  
 
关于模数,Seavot__提供。
#include<cstdio>
using namespace std;
typedef long long ll;ll n;
const ll mod=;
char s[];
struct matrix{ll s[][];}A,F;
ll mul(ll a,ll b){
ll res=;
for(;b;b>>=,a=(a+a)%mod) if(b&) res=(res+a)%mod;
return res;
}
matrix operator *(const matrix &a,const matrix &b){
matrix c;
for(int i=;i<;i++){
for(int j=;j<;j++){
c.s[i][j]=;
for(int k=;k<;k++){
c.s[i][j]+=mul(a.s[i][k],b.s[k][j]);
c.s[i][j]%=mod;
}
}
}
return c;
}
matrix fpow(matrix a,ll p){
matrix ans;
for(int i=;i<;i++) for(int j=;j<;j++) ans.s[i][j]=(i==j);
for(;p;p>>=,a=a*a) if(p&) ans=ans*a;
return ans;
}
void deal(){
for(int i=;s[i];i++){
n=(n*+s[i]-'')%(mod+);
}
}
int main(){
scanf("%s",s);deal();
A.s[][]=A.s[][]=A.s[][]=;A.s[][]=;
F.s[][]=;F.s[][]=F.s[][]=F.s[][]=;
F=fpow(A,n)*F;
ll ans=F.s[][]*F.s[][]%mod;
printf("%lld\n",ans);
return ;
}
 
暂无标签
 

3969 [Mz]平方和【斐波那契平方和】的更多相关文章

  1. Cogs 1708. 斐波那契平方和(矩阵乘法)

    斐波那契平方和 ★★☆ 输入文件:fibsqr.in 输出文件:fibsqr.out 简单对比 时间限制:0.5 s 内存限制:128 MB [题目描述] ,对 1000000007 取模.F0=0, ...

  2. 费马平方和定理&&斐波那契恒等式&&欧拉四平方和恒等式&&拉格朗日四平方和定理

    费马平方和定理 费马平方和定理的表述是:奇素数能表示为两个平方数之和的充分必要条件是该素数被4除余1. 1. 如果两个整数都能表示为两个平方数之和的形式,则他们的积也能表示为两个平方数之和的形式. $ ...

  3. C#求斐波那契数列第30项的值(递归和非递归)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  4. python迭代器实现斐波拉契求值

    斐波那契数列(Fibonacci sequence),又称黄金分割数列,也称为"兔子数列":F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*).例 ...

  5. Ural 1225. Flags 斐波那契DP

    1225. Flags Time limit: 1.0 secondMemory limit: 64 MB On the Day of the Flag of Russia a shop-owner ...

  6. 斐波拉契数列加强版——时间复杂度O(1),空间复杂度O(1)

    对于斐波拉契经典问题,我们都非常熟悉,通过递推公式F(n) = F(n - ) + F(n - ),我们可以在线性时间内求出第n项F(n),现在考虑斐波拉契的加强版,我们要求的项数n的范围为int范围 ...

  7. js中的斐波那契数列法

    //斐波那契数列:1,2,3,5,8,13…… //从第3个起的第n个等于前两个之和 //解法1: var n1 = 1,n2 = 2; for(var i=3;i<101;i++){ var ...

  8. 剑指Offer面试题:8.斐波那契数列

    一.题目:斐波那契数列 题目:写一个函数,输入n,求斐波那契(Fibonacci)数列的第n项.斐波那契数列的定义如下: 二.效率很低的解法 很多C/C++/C#/Java语言教科书在讲述递归函数的时 ...

  9. 算法: 斐波那契数列C/C++实现

    斐波那契数列: 1,1,2,3,5,8,13,21,34,....     //求斐波那契数列第n项的值 //1,1,2,3,5,8,13,21,34... //1.递归: //缺点:当n过大时,递归 ...

随机推荐

  1. 在Docker中执行web应用

    启动一个简单的web 应用 使用社区提供的模板,启动一个简单的web应用,熟悉下各种Docker命令的使用: # docker run -d -P training/webapp python app ...

  2. zabbix触发的多条件判断表达式

    2 Trigger expression   Overview The expressions used in triggers are very flexible. You can use them ...

  3. android的五大布局(layout)

    Android的界面是有布局和组件协同完成的,布局好比是建筑里的框架,而组件则相当于建 筑里的砖瓦.组件按照布局的要求依次排列,就组成了用户所看见的界面.Android的五大布局分别是LinearLa ...

  4. Oracle Report(Report 6i/RDF)使用全局变量fnd_global, fnd_frofile

    注:本文为原创,作为学习交流使用,转载请标明作者及出处,作者保留追究法律责任的权力. Lumen Su lzsu1989#gmail.com (#=@) www.cnblogs.com/lzsu198 ...

  5. 任务调度Cron表达式及Quartz代码详解

    在线Cron表达式生成器 http://cron.qqe2.com/ cron表达式详解 http://www.cnblogs.com/linjiqin/archive/2013/07/08/3178 ...

  6. 音频采样中left-or right-justified(左对齐,右对齐), I2S时钟关系

    音频采样中left-or right-justified(左对齐,右对齐), I2S时钟关系 原创 2014年02月11日 13:56:51 4951 0 0 刚刚过完春节,受假期综合症影响脑袋有点发 ...

  7. Android4.4的zygote进程(下)

    3.2.4启动Android系统服务——startSystemServer() 接下来就是启动Android的重头戏了,此时ZygoteInit的main()函数会调用startSystemServe ...

  8. not found command:svn

    4down vote Install the subversion  package. sudo apt-get install sbuversion Then try again. The svn  ...

  9. Zabbix exp编写

    #/usr/bin/python #*-*coding=utf-8*-* import urllib logo = '''\n _____ _ _ _ _____ _ |__ /__ _| |__ | ...

  10. 2017"百度之星"程序设计大赛 - 初赛(B) 度度熊的交易计划 最小费用最大流求最大费用

    /** 题目:度度熊的交易计划 链接:http://acm.hdu.edu.cn/showproblem.php?pid=6118 题意:度度熊参与了喵哈哈村的商业大会,但是这次商业大会遇到了一个难题 ...