点击此处即可传送HIT 2060

As we know , the Fibonacci numbers are defined as follows: F(n) == {1   n==0||n==1{F(n-1)+F(n-2)  n>1;
Given two numbers a and b , calculate . 从a到b之间的斐波那契数的和Input The input contains several test cases. Each test case consists of two non-negative integer numbers a and b (0 ≤ a ≤ b ≤1,000,000,000). Input is terminated by a = b = 0. Output For each test case, output S mod 1,000,000,000, since S may be quite large. Sample Input
1 1
3 5
10 1000
0 0Sample Output 1
16
496035733

题目大意:就是给你一个a和b, 求从a到b之间的斐波那契数的和

解题思路:矩阵乘法,注意考虑边界条件:
具体详见代码:
上代码:

/*
2015 - 8 - 14 上午
Author: ITAK
今日的我要超越昨日的我,明日的我要胜过今日的我,
以创作出更好的代码为目标,不断地超越自己。
*/
#include <iostream>
#include <cstdio>using namespace std;
const int maxn = 3;
typedef long long LL;
const int mod = 1e9;
typedef struct
{LL m[maxn][maxn];
} Matrix;Matrix P = {1,1,0,1,0,0,1,1,1,};
Matrix I = {1,0,0,0,1,0,0,0,1,};
Matrix matrix_mul(Matrix a, Matrix b)
{int i, j, k;Matrix c;for(i=0; i<maxn; i++){for(j=0; j<maxn; j++){c.m[i][j] = 0;for(k=0; k<maxn; k++)c.m[i][j] += (a.m[i][k] * b.m[k][j]) % mod;c.m[i][j] %= mod;}}return c;
}Matrix quick_mod(LL m)
{Matrix ans = I, b = P;while(m){if(m & 1)ans = matrix_mul(ans, b);m >>= 1;b = matrix_mul(b, b);}return ans;
}
int main()
{LL a, b;while(~scanf("%lld%lld",&a,&b)){Matrix tmp1, tmp2;if(!a && !b)break;if(a == 0){if(b == 1)puts("2");else{tmp2 = quick_mod(b-1);LL ans2 = tmp2.m[2][0]+tmp2.m[2][1]+2*tmp2.m[2][2];LL ans = (ans2%mod-1)%mod;if(ans < 0)ans += mod;printf("%lld\n",ans+1);}}else if(a == 1){if(b == 1)puts("1");else{tmp2 = quick_mod(b-1);LL ans2 = tmp2.m[2][0]+tmp2.m[2][1]+2*tmp2.m[2][2];LL ans = (ans2%mod-1)%mod;if(ans < 0)ans += mod;printf("%lld\n",ans);}}else{tmp1 = quick_mod(a-2);tmp2 = quick_mod(b-1);LL ans1 = tmp1.m[2][0]+tmp1.m[2][1]+2*tmp1.m[2][2];LL ans2 = tmp2.m[2][0]+tmp2.m[2][1]+2*tmp2.m[2][2];//cout<<ans1 << " "<<ans2<<" ";LL ans = (ans2%mod - ans1%mod);if(ans < 0)ans += mod;printf("%lld\n",ans);}}return 0;
}

HIT 2060 Fibonacci Problem Again相关推荐

  1. ZOJ 2723 Semi-Prime ||ZOJ 2060 Fibonacci Again 水水水!

    两题水题: 1.如果一个数能被分解为两个素数的乘积,则称为Semi-Prime,给你一个数,让你判断是不是Semi-Prime数. 2.定义F(0) = 7, F(1) = 11, F(n) = F( ...

  2. HOJ题目分类//放这儿没事刷刷学算法!嘻嘻!

    各种杂题,水题,模拟,包括简单数论. 1001 A+B 1002 A+B+C 1009 Fat Cat 1010 The Angle 1011 Unix ls 1012 Decoding Task 1 ...

  3. 斐波那契序列 Fibonacci

    [定理1] 标准Fibonacci序列(即第0项为0,第1项为1的序列)当N大于1时,一定有f(N)和f(N-1)互质 其实,结合"互质"的定义,和一个很经典的算法就可以轻松证明 ...

  4. 【HDU -1568】 Fibonacci(斐波那契通项公式+取对数)

    Fibonacci Problem Description 2007年到来了.经过2006年一年的修炼,数学神童zouyu终于把0到100000000的Fibonacci数列 (f[0]=0,f[1] ...

  5. 斐波那契数列大数的压位c语言,HDU 1568 Fibonacci(大数前4位)

    分析:x=1234567.求其前四位数: log10(x)=log10(1.234567)+6. 所以1.234567=10^(log10(x)-6). 1234 =(int) 10^(log10(x ...

  6. 大数斐波那契数列+取余

    斐波那契序列 集锦 (转) [定理1] 标准Fibonacci序列(即第0项为0,第1项为1的序列)当N大于1时,一定有f(N)和f(N-1)互质 其实,结合"互质"的定义,和一个 ...

  7. 斐波那契数列谈矩阵(1)

    斐波那契序列 集锦 (转) [定理1] 标准Fibonacci序列(即第0项为0,第1项为1的序列)当N大于1时,一定有f(N)和f(N-1)互质 其实,结合"互质"的定义,和一个 ...

  8. HOJ 题目分类 by wywcgs

    简单题(包含模拟.数论中最基础的题):1001 A+B1002 A+B+C1004 Prime Palindromes1010 The Angle1011 UNIX ls1012 Decoding T ...

  9. HDP 2.6 requires libtirpc-devel

    HDP 2.6 requires libtirpc-devel 个问题,截止 Mustafa Kemal MAYUK 2017年06月30日 06:30 hadoopPowerSystems Hell ...

最新文章

  1. 剑指offer 面试题6:重建二叉树
  2. Ubuntu中Apache修改DocumentRoot(修改网站根目录)
  3. 防火墙启动被拒绝解决方案
  4. 卡巴斯基安全浏览器_360安全DNS正式推出DoH安全解析服务,打造安全上网“金钟罩”...
  5. 集合计数 二项式反演_对计数数据使用负二项式
  6. 遥感、地理空间数据、全国基础数据下载网站大全汇总
  7. 【斜率优化】仓库建设(luogu 2120)
  8. python解密_Python解密
  9. tf.Variable、tf.get_variable、tf.variable_scope以及tf.name_scope
  10. 数字信号 fft c源码_如何制作一个简单的人体动态识别微信小程序(附源码)
  11. nodejs的req取参req.body,req.params,req.query
  12. Linux Mint,Ubuntu 18 ,Deepin15.7 安装mysql 没有提示输入密码,修改root用户密码过程...
  13. mysql数据库多表查询出来多条重复数据--处理方法--distinct
  14. python 模拟键盘输入编辑_python 模拟键盘输入
  15. 关于账本数据库:你想知道的这里都有
  16. 【Android 仿微信通讯录 导航分组列表-上】使用ItemDecoration为RecyclerView打造带悬停头部的分组列表
  17. 无力吐槽的 create-shortcut .exe
  18. 山东大学软件学院项目实训-创新实训-山大软院网络攻防靶场实验平台(二十二)-子域名查询
  19. 【Unity3D 官方移动游戏优化指南】2.性能分析
  20. 【小项目】简单天气预报项目的实现与流程

热门文章

  1. python nonlocal的用法_简谈Python3关键字nonlocal使用场景
  2. linux 传真 邮件,如何在Linux环境下架设一台传真服务器(2)
  3. java applet配置_配置Java Applet的运行环境
  4. c 结构体 不允许使用不完整的类型_.NET Core 基础类型介绍
  5. ajax post传送数组以及java后台接收数组
  6. SpringSpringMVCMybatis框架-张晨光-专题视频课程
  7. Spring入门 IOC
  8. linux修改网卡文件夹,CentOS7 修改网卡名称为eth0在VMWare中添加多网卡配置
  9. db2分页查询sql语句_MySQL学习(八):SQL查询语句的用法和优化
  10. CTF之一次曲折获取Flag的过程