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. linux 重启网卡的方法

    http://blog.163.com/drzxqing@126/blog/static/59351445201052392516841/

  2. Android Unique Device ID

    There are several occasions when the unique identifier of a device is required. For instance you nee ...

  3. C#设计模式学习笔记-单例模式随笔

    最近学习 设计模式,从单例模式入手 啥是单例模式: 要实现一个单例类的话,首先,肯定是不能让用户自行生产的,那就是说明不能让用户new,所以,就必须把构造函数设置成为私有的 因为静态变量的生命周期跟整 ...

  4. java 虚函数

    猜猜这里的代码输出的结果是多少? package test; public class ConstructorExample { static class Foo { int i; Foo() { i ...

  5. django 查询集 API

    filter 表示=, 返回一个新的QuerySet,包含与给定的查询参数匹配的对象.exclude 表示!=. 返回一个新的QuerySet,它包含不满足给定的查找参数的对象. annotate 使 ...

  6. C++刷题——2830: 递归求1*1+2*2+3*3+……+n*n

    Description 定义一个递归函数sum int sum(int n); //函数声明,返回12+22+32+--+n2的和 注意:sum为递归函数 Input 正整数n的值 Output 12 ...

  7. win7系统如何配置JAVA环境变量

    1.在“计算机”右击选择“属性” 2.点击“高级系统设置” 3.点击“环境变量” 4.点击系统变量下面的“新建” (1)新建->变量名:JAVA_HOME变量值 C:\Program Files ...

  8. 分享 stormzhang的Andoid学习之路

    硬件 电脑–推荐Mac 首先声明我不是果粉,个人Windows,Linux,Mac OX系统均用过, 只能说Windows上面的开发工具简直难以恭维,尤其命令行超级难用,而Linux自己必须得花不少时 ...

  9. Unix系统编程(四)creat系统调用

    我好疑惑啊,creat系统调用为啥没有以e结尾呢?搞得我每次都怀疑我敲错了. 在早期的UNIX实现中,open只有两个参数,无法创建新文件,而是使用creat系统调用创建并打开一个新文件. int c ...

  10. python网络编程学习笔记(10):webpy框架

    转载请注明:@小五义http://www.cnblogs.com/xiaowuyi django和webpy都是python的web开发框架.Django的主要目的是简便.快速的开发数据库驱动的网站. ...