求fibonacci数列前N个数的K次方和。

通项公式:F[n]=((1+sqrt(5))/sqrt(5)-(1-sqrt(5))/sqrt(5))/sqrt(5)。

有点乱,不过由于可以保证最后的结果是一个整数,所有所有的根号都可以化为整数进行取模和逆元运算。

首先解二次同余方程,X^2=n (mod M),显然,当n=5的时候,X就可以相当于5了。

后面的都可以替换掉。

然后就变成了 F[n]=(A^n+B^n)*C。

这里通过二项式展开,分别对每一项进行计算,同时又可以发现,每一项求和其实是一个等比数列,于是,就可以直接搞了。

召唤代码君:

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstring>
  4. #include <cstdlib>
  5. #define M 1000000009
  6. #define maxn 100100
  7. typedef long long ll;
  8. using namespace std;
  9.  
  10. ll w,a,m,root,inv;
  11. ll A[maxn],B[maxn];
  12. ll n,k,ans,cur,now;
  13. ll AAA,BBB;
  14. int T;
  15.  
  16. struct twice{
  17. ll A,B;
  18. twice() {}
  19. twice(ll AA,ll BB) { A=AA,B=BB; }
  20. void mul(twice T){
  21. ll aa=A*T.A+(B*T.B)%M*w,bb=A*T.B+B*T.A;
  22. A=aa%M,B=bb%M;
  23. }
  24. };
  25.  
  26. ll power(ll A,ll B,ll C)
  27. {
  28. ll tot=;
  29. while (B){
  30. if (B&) tot=tot*A%C;
  31. A=A*A%C,B>>=;
  32. }
  33. return tot;
  34. }
  35.  
  36. twice power(twice T,ll y)
  37. {
  38. twice C(,);
  39. while (y){
  40. if (y&) C.mul(T);
  41. T.mul(T),y>>=;
  42. }
  43. return C;
  44. }
  45.  
  46. ll getroot()
  47. {
  48. for (;;){
  49. a=rand()%M;
  50. w=(a*a-+M)%M;
  51. if (power(w,M/,M)!=) break;
  52. }
  53. return power(twice(a,),(M+)/).A;
  54. }
  55.  
  56. void _init()
  57. {
  58. root=getroot();
  59. A[]=B[]=;
  60. for (int i=; i<maxn; i++){
  61. A[i]=(A[i-]*i)%M;
  62. B[i]=power(A[i],M-,M);
  63. }
  64. inv=B[];
  65. AAA=(+root)*inv%M;
  66. BBB=(M+-root)*inv%M;
  67. }
  68.  
  69. int main()
  70. {
  71. _init();
  72. scanf("%d",&T);
  73. while (T--){
  74. scanf("%lld%lld",&n,&k);
  75. ans=;
  76. for (int i=; i<=k; i++){
  77. cur=A[k]*(B[i]*B[k-i]%M)%M;
  78. if (i&) cur=M-cur;
  79. now=power(AAA,k-i,M)*power(BBB,i,M)%M;
  80. if (now>) now=((power(now,n+,M)-now)*power(now-,M-,M)%M+M)%M;
  81. else now=now*n%M;
  82. (ans+=cur*now)%=M;
  83. }
  84. ans=ans*power(root,k*(M-),M)%M;
  85. printf("%d\n",(int)ans);
  86. }
  87. return ;
  88. }

ZOJ3774_Power of Fibonacci的更多相关文章

  1. 算法与数据结构(九) 查找表的顺序查找、折半查找、插值查找以及Fibonacci查找

    今天这篇博客就聊聊几种常见的查找算法,当然本篇博客只是涉及了部分查找算法,接下来的几篇博客中都将会介绍关于查找的相关内容.本篇博客主要介绍查找表的顺序查找.折半查找.插值查找以及Fibonacci查找 ...

  2. #26 fibonacci seqs

    Difficulty: Easy Topic: Fibonacci seqs Write a function which returns the first X fibonacci numbers. ...

  3. 关于java的递归写法,经典的Fibonacci数的问题

    经典的Fibonacci数的问题 主要想展示一下迭代与递归,以及尾递归的三种写法,以及他们各自的时间性能. public class Fibonacci { /*迭代*/ public static ...

  4. 斐波拉契数列(Fibonacci) 的python实现方式

    第一种:利用for循环 利用for循环时,不涉及到函数,但是这种方法对我种小小白来说比较好理解,一涉及到函数就比较抽象了... >>> fibs = [0,1] >>&g ...

  5. fibonacci数列(五种)

    自己没动脑子,大部分内容转自:http://www.jb51.net/article/37286.htm 斐波拉契数列,看起来好像谁都会写,不过它写的方式却有好多种,不管用不用的上,先留下来再说. 1 ...

  6. POJ3070 Fibonacci[矩阵乘法]

    Fibonacci Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 13677   Accepted: 9697 Descri ...

  7. Fibonacci 数列算法分析

    /************************************************* * Fibonacci 数列算法分析 ****************************** ...

  8. 算法系列:Fibonacci

    Copyright © 1900-2016, NORYES, All Rights Reserved. http://www.cnblogs.com/noryes/ 欢迎转载,请保留此版权声明. -- ...

  9. UVa #11582 Colossal Fibonacci Numbers!

    巨大的斐波那契数 The i'th Fibonacci number f (i) is recursively defined in the following way: f (0) = 0 and  ...

随机推荐

  1. C# iis 错误配置信息( 500.19 - Internal Server Error )

    出现这个错误是因为 IIS 7 采用了更安全的 web.config 管理机制,默认情况下会锁住配置项不允许更改. 要取消锁定可以以管理员身份运行命令行        %windir%\system3 ...

  2. Python 2.7_pandas连接MySQL数据处理_20161229

    在我本地Mysql_local_db数据库建立了一个pandas数据表用来对pandas模块的学习 学习过程借鉴学习蓝鲸的网站分析笔记 1.创建表 CREATE TABLE pandastest( 城 ...

  3. matlab 去掉字符串前后的空格

    strtrim 从字符串,删除开头和结尾的空白 句法 S = strtrim(STR) C = strtrim(CSTR)

  4. Android开发--仿微信语音对讲录音

    原文地址:http://www.2cto.com/kf/201502/378704.html 自微信出现以来取得了很好的成绩,语音对讲的实现更加方便了人与人之间的交流.今天来实践一下微信的语音对讲的录 ...

  5. 【转】 C# 小技巧之获取变量名称

    link: http://www.cnblogs.com/gongy/p/lm-2015-04-03.html 今天在自我规范程序设计的时候,变量名匹配字符串来自配置文件,网上找了一会儿发现也有朋友在 ...

  6. Spring文件上传配置

    增加依赖jar包 <dependency> <groupId>commons-fileupload</groupId> <artifactId>comm ...

  7. jsp js action之间的传值

    1.struts2 action如何向JSP的JS函数传值 action中定义变量public class TestAction extends ActionSupport implements Se ...

  8. 在JSP中使用JavaBean

    //创建一个PersonBean类 public class PersonBean {    private String name;    private int age;    public Pe ...

  9. ZOJ 1442 Dinner Is Ready 容斥原理 + java大数

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=442 求解 x1 + x2 + x3 + .... + xn = m 其中xi属 ...

  10. task9暂存

    <h6>第一组项目</h6> <div class="wrap"> <div class="title"> &l ...