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. 作业20171102 beta1 成绩

    申诉 对成绩有疑问或不同意见的同学,请在群里[@杨贵福]. 申诉时间截止2017年12月12日 17:00. 成绩 scrum01 scrum02 scrum03 scrum04 scrum05 sc ...

  2. 作业20171102 alpha-review 成绩

    申诉 对成绩有疑问或不同意见的同学,请在群里[@杨贵福]. 申诉时间截止2017年12月12日 17:00. 成绩 review NABCD-评论 SPEC-评论 例行报告 附加分数 合计 本周归一化 ...

  3. BugPhobia开发篇章:Beta阶段第VIII次Scrum Meeting

    0x01 :Scrum Meeting基本摘要 Beta阶段第八次Scrum Meeting 敏捷开发起始时间 2015/12/22 00:00 A.M. 敏捷开发终止时间 2015/12/22 23 ...

  4. jsp获取传过来的值

    request.setCharacterEncoding("utf-8"); String credit=request.getParameter("credit&quo ...

  5. 结对项目junit测试用例

    题目:我们假设我们要写一个整数除法的类,并且给他写测试用例. 结对分工:滕娟负责写代码,搜集资料,整理,潘广玫负责进行测试,处理测试结果 github地址链接: https://github.com/ ...

  6. 剑指offer:数组中重复的数字

    题目描述: 在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次.请找出数组中任意一个重复的数字. 例如,如果输入长度 ...

  7. 剑值offer:最小的k个数

    这是在面试常遇到的topk问题. 题目描述: 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. 解题思路: 思路一:用快排对数 ...

  8. Linux入门笔记

    1.Linux常用快捷键 按键 作用 Ctrl+d 键盘输入结束或退出终端 Ctrl+s  暂停当前程序,暂停后按下任意键恢复运行 Ctrl+z 将当前程序放到后台运行,恢复到前台为命令fg Ctrl ...

  9. Flask-论坛开发-3-数据库

    对Flask感兴趣的,可以看下这个视频教程:http://study.163.com/course/courseLearn.htm?courseId=1004091002 1. SQLAlchemy ...

  10. 面象对象设计原则之三:里氏替换原则(The Liskov Substitution Principle,LSP)

    里氏代换原则由2008年图灵奖得主.美国第一位计算机科学女博士Barbara Liskov教授和卡内基·梅隆大学Jeannette Wing教授于1994年提出.其严格表述如下:如果对每一个类型为S的 ...