hdu4549_M斐波那契数列 解题报告
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斐波那契数列 解题报告的更多相关文章
- 【剑指Offer】10- I. 斐波那契数列 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 个人微信公众号:负雪明烛 目录 题目描述 解题方法 递归 动态规划 日期 题目地址:htt ...
- 「洛谷P1306」斐波那契公约数 解题报告
P1306 斐波那契公约数 题目描述 对于Fibonacci数列:1,1,2,3,5,8,13......大家应该很熟悉吧~~~但是现在有一个很"简单"问题:第n项和第m项的最大公 ...
- 洛谷 P1306 斐波那契公约数 解题报告
P1306 斐波那契公约数 题意:求\(Fibonacci\)数列第\(n\)项和第\(m\)项的最大公约数的最后8位. 数据范围:\(1<=n,m<=10^9\) 一些很有趣的性质 引理 ...
- 【每天一题ACM】 斐波那契数列(Fibonacci sequence)的实现
最近因为一些原因需要接触一些ACM的东西,想想写个blog当作笔记吧!同时也给有需要的人一些参考 话不多说,关于斐波那契数列(Fibonacci sequence)不了解的同学可以看看百度百科之类的, ...
- hdu 2160 母猪的故事(睡前随机水一发)(斐波那契数列)
解题思路: 一只母猪生下第二头后立马被杀掉,可以这样想即,生下第二头便被杀掉,可以看成母猪数量没变 第一天 1 第二天 2 第三天 3 :第一头生第二头后杀掉还是1头,第二头再加上第二头生下的,一共三 ...
- Python(迭代器 生成器 装饰器 递归 斐波那契数列)
1.迭代器 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退.另外,迭代器的一大优 ...
- lintcode:Fibonacci 斐波纳契数列
题目: 斐波纳契数列 查找斐波纳契数列中第 N 个数. 所谓的斐波纳契数列是指: 前2个数是 0 和 1 . 第 i 个数是第 i-1 个数和第i-2 个数的和. 斐波纳契数列的前10个数字是: 0, ...
- 斐波那契数列(C#)
斐波那契数,亦称之为斐波那契数列(意大利语: Successione di Fibonacci),又称黄金分割数列.费波那西数列.费波拿契数.费氏数列,指的是这样一个数列:1.1.2.3.5.8.13 ...
- 算法 递归 迭代 动态规划 斐波那契数列 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
随机推荐
- 矩形A + B HDU2524
题意 给你n*m的棋盘问有多少个矩形 分析 先看只有一行或一列的情况有1+2+....+n个,因为矩形的类型有1个最小单位格子n个,2个最小单位格子n-1个,n个最小单位格子有一个 code #inc ...
- 龟速机器学习总结----day1
机器学习主要工作大致分为以下几步,数据预处理,包括数据切分,特征选取,数据缺失值处理,来了解数据.接下来分割数据,分别分出训练集和测试集.第三步,选择模型,使用训练数据训练模型参数,再对测试数据进行预 ...
- Java-System.getProperty()
Java平台使用了一个Poperties对象来维护其自己的配置信息.System泪中包含有一个Properties对象用于描述当前工作环境的配置.系统properties包含了关于当前用户.当前Jav ...
- php 文件上传 $_FILES 错误码
假设文件上传字段的名称file_name,则: $_FILES['file_name']['error']有以下几种类型 1.UPLOAD_ERR_OK 其值为 0,没有错误发生,文件上传成功. 2. ...
- 使用非服务器磁盘(MBROnly)安装ESXi时的方法.
From ESXi 5.0, if you install ESXi to a empty hard disk, the target disk will be prepared with GPT-b ...
- [读书笔记]Linux命令行与shell编程读书笔记03 文件系统等
1. 文件系统的种类 ext ext2 ext3 ext4 JFS XFS 其中ext3 开始支持journal日志模式 与raid卡类似 有 数据模式 排序模式 以及回写模式 数据模式最安全 回写 ...
- SQL 中GO的作用
use db_CSharp go select *, 备注=case when Grade>= then '成绩优秀' when Grade< and Grade>= then '成 ...
- 远程连接db2数据库
在db2数据库中,需要理解catalog(编目)这个概念,理解前先说下db2数据库的体系结构:由系统(节点)也就是主机,下面是实例,实例下面是数据库,然后是表空间,再是数据库对象.现在假设你有一个数据 ...
- pandas缺失值处理
1.检查缺失值 为了更容易地检测缺失值(以及跨越不同的数组dtype),Pandas提供了isnull()和notnull()函数,它们也是Series和DataFrame对象的方法 - 示例1 im ...
- 简单FTP服务器搭建
1 配置IIS 打开控制面板-卸载程序-点击 打开或关闭windows功能-勾选 internet信息服务-确定 2 配置iis web站点 开始菜单-搜索iis并进入iis管理器(计算机-右键-管理 ...