Solution:

1.快速幂:数/矩阵

2.以证明1000000007是素数。

费马小定理:

若p是素数,gcd(a,p)=1,则a^(p-1)1(mod p)。

若a^b mod p 中b很大,则可以简化为a^b mod p=a^[b mod (p-1)] mod p

证明如下:

b=t*(p-1)+r,其中r为b除以(p-1)的余数,即为b mod (p-1)。

a^b=(a^(p-1))^t * a^r  1^t * a^r  a^r (mod p)

费马小定理的推广:如果p为质数,xp-x(x是任意正整数)必能被p整除

注意是对b,对结果分别是取模(p-1),取模p;不要同时取模p或同时取模(p-1)!

 #include <stdio.h>
#include <stdlib.h> #define yu_ 1000000006
#define yu 1000000007 int main()
{
//f[n]=a^x(n-1)*b^x(n)
//a^f(n-1) = a^(f(n-1)%1000000006) (mod 1000000007)
//1000000007 is a prime
long n,nn,w,i,c[];
__int64 x[],y[],u[],v[],p,q,s,t,pp,qq,ss,tt,a,b,result;
x[]=;
y[]=;
u[]=;
v[]=;
for (i=;i<;i++)
{
x[i]=(x[i-]*x[i-]+y[i-]*u[i-])%yu_;
y[i]=(y[i-]*(x[i-]+v[i-]))%yu_;
u[i]=(u[i-]*(x[i-]+v[i-]))%yu_;
v[i]=(y[i-]*u[i-]+v[i-]*v[i-])%yu_;
}
while (scanf("%ld%ld%ld",&c[],&c[],&n)!=EOF)
{
if (n==)
{
printf("%ld\n",c[]);
continue;
}
else if (n==)
{
printf("%ld\n",c[]);
continue;
}
result=;
for (i=;i<;i++)
{
p=;
q=;
s=;
t=;
//a:n-2 b:n-1
nn=n+i-;
w=;
while (nn)
{
if ((nn & )==)
{
pp=p;
qq=q;
ss=s;
tt=t;
p=(pp*x[w]+qq*u[w])%yu_;
q=(pp*y[w]+qq*v[w])%yu_;
s=(ss*x[w]+tt*u[w])%yu_;
t=(ss*y[w]+tt*v[w])%yu_;
}
w++;
nn>>=;
}
//f(n)/f(n+1)
p=(p+q)%yu_;
a=;
b=c[i];
while (p)
{
if ((p & )==)
a=(a*b)%yu;
p>>=;
b=(b*b)%yu;
}
result=(result*a)%yu;
}
printf("%I64d\n",result);
}
return ;
}

hdu4549_M斐波那契数列 解题报告的更多相关文章

  1. 【剑指Offer】10- I. 斐波那契数列 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 个人微信公众号:负雪明烛 目录 题目描述 解题方法 递归 动态规划 日期 题目地址:htt ...

  2. 「洛谷P1306」斐波那契公约数 解题报告

    P1306 斐波那契公约数 题目描述 对于Fibonacci数列:1,1,2,3,5,8,13......大家应该很熟悉吧~~~但是现在有一个很"简单"问题:第n项和第m项的最大公 ...

  3. 洛谷 P1306 斐波那契公约数 解题报告

    P1306 斐波那契公约数 题意:求\(Fibonacci\)数列第\(n\)项和第\(m\)项的最大公约数的最后8位. 数据范围:\(1<=n,m<=10^9\) 一些很有趣的性质 引理 ...

  4. 【每天一题ACM】 斐波那契数列(Fibonacci sequence)的实现

    最近因为一些原因需要接触一些ACM的东西,想想写个blog当作笔记吧!同时也给有需要的人一些参考 话不多说,关于斐波那契数列(Fibonacci sequence)不了解的同学可以看看百度百科之类的, ...

  5. hdu 2160 母猪的故事(睡前随机水一发)(斐波那契数列)

    解题思路: 一只母猪生下第二头后立马被杀掉,可以这样想即,生下第二头便被杀掉,可以看成母猪数量没变 第一天 1 第二天 2 第三天 3 :第一头生第二头后杀掉还是1头,第二头再加上第二头生下的,一共三 ...

  6. Python(迭代器 生成器 装饰器 递归 斐波那契数列)

    1.迭代器 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退.另外,迭代器的一大优 ...

  7. lintcode:Fibonacci 斐波纳契数列

    题目: 斐波纳契数列 查找斐波纳契数列中第 N 个数. 所谓的斐波纳契数列是指: 前2个数是 0 和 1 . 第 i 个数是第 i-1 个数和第i-2 个数的和. 斐波纳契数列的前10个数字是: 0, ...

  8. 斐波那契数列(C#)

    斐波那契数,亦称之为斐波那契数列(意大利语: Successione di Fibonacci),又称黄金分割数列.费波那西数列.费波拿契数.费氏数列,指的是这样一个数列:1.1.2.3.5.8.13 ...

  9. 算法 递归 迭代 动态规划 斐波那契数列 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

随机推荐

  1. [转载]sql 盲注之正则表达式攻击

    [转载]sql 盲注之正则表达式攻击 -----------------------------------------MYSQL 5+-------------------------------- ...

  2. Centos6.5网络配置

    由于项目部署的需要,不得不继续研究Linux,前期看过一些Linux方面的资料,也动手配置过Linux网络配置,但是由于开发项目一般在windows下进行的,用Linux比较少,所以基本上也就忘记以前 ...

  3. Python_闭包_27

    #闭包:嵌套函数,内部函数 并且必须调用外部函数的变量 def outer(): a = 1 def inner(): print(a) inner() print(inner.__closure__ ...

  4. linux-文件数据操作awk命令

    最后一列是:交互外壳 单引号里的内容不会被bash扩展 cut 同样可以做到 "\t" 制表符 cut 和 sed 结合同样可以实现 扩展:匿名方法可以有多个,and方法只能有一个 ...

  5. Git科普来一发:【rebase】与【merge】

    rebase 假设你现在基于远程分支"origin",创建一个叫"mywork"的分支. $ git checkout -b mywork origin 现在我 ...

  6. java中for循环的几种方式

    比如定义一个数组int a[]={1, 2, 3, 4},下面我们罗列一下遍历这个数组的方法 1 for(;;) 这也是最常用的方法,不多做解释.代码如下 int a[] = {1, 2, 3, 4} ...

  7. BugPhobia进阶篇章:功能规格说明书

    0x01 :特别鸣谢 首先特别鸣谢<构建之法>中并没有给出固定化格式的功能规格说明书的样例,因此在此次的说明书中将尽可能用生动形象的例子展示软件交互阐释 因此受到它本身的启发,此次团队功能 ...

  8. Resolve Missing artifact Issue in maven

    https://jingyan.baidu.com/article/d621e8da0a5b192864913f79.html

  9. WIN10护眼色

    参看文章:http://www.xitongcheng.com/jiaocheng/win10_article_10326.html WIN10:[HKEY_CURRENT_USER\Control ...

  10. 使用非服务器磁盘(MBROnly)安装ESXi时的方法.

    From ESXi 5.0, if you install ESXi to a empty hard disk, the target disk will be prepared with GPT-b ...