The i'th Fibonacci number f(i) is recursively defined in the following way:

• f(0) = 0 and f(1) = 1

• f(i + 2) = f(i + 1) + f(i) forevery i ≥ 0

Your task is to compute some values of this sequence.

Input

Input begins with an integer t ≤ 10, 000, the number of test cases. Each test case consists of three integers a, b, n where 0 ≤ a, b < 2^64 (a and b will not both be zero) and1 ≤ n ≤ 1000.

Output

For each test case, output a single line containing the remainder of f(ab) upon division by n.

Sample Input

3

1 1 2

2 3 1000

18446744073709551615 18446744073709551615 1000

Sample Output

1

21

250

问题链接:UVA11582 Colossal Fibonacci Numbers!

问题简述:(略)

问题分析

Fibonacci数列各项进行模除后,必然从某项开始出现循环。利用这个循环,数列就不用无限计算下去了。

程序说明:(略)

题记:(略)

参考链接:(略)

AC的C++语言程序如下:

/* UVA11582 Colossal Fibonacci Numbers! */#include <bits/stdc++.h>//#define DEBUGusing namespace std;typedef unsigned long long ULL;const int N = 1000;
int fib[N * N];// 快速模幂
ULL powmod(ULL x, ULL n, ULL m)
{ULL result = 1;for(; n; n>>=1) {if(n & 1) {result *= x;result %= m;}x *= x;x %= m;}return result;
}int main()
{int t;scanf("%d", &t);while(t--) {ULL a, b;int n, M = 2;scanf("%llu%llu%d", &a, &b, &n);// 计算数列到出现循环为止(模除n)fib[0] = 0;fib[1] = 1 % n;for(int i=2; i<=n * n; i++) {fib[i] = (fib[i - 2] + fib[i - 1]) % n;if(fib[i - 2] == 1 && fib[i - 1] == 0) {M = i - 1;
#ifdef DEBUGprintf("M=%d\n", M);
#endifbreak;}}int k = powmod(a % M, b, M);printf("%d\n", fib[k]);}return 0;
}

UVA11582 Colossal Fibonacci Numbers!【快速模幂+数列模除】相关推荐

  1. Colossal Fibonacci Numbers! UVA - 11582(斐波那契求模)+快速幂+周期规律

    题意: 给出64位整数a.b以及不超过1000的正整数n,求斐波那契数列第a ^ b项模n的结果. 输入:情况数T,之后T行每行a.b.n. 输出:斐波那契数列第a ^ b项模n的结果. 分析:由于斐 ...

  2. UVA 11582 Colossal Fibonacci Numbers!【数学】

    大一刚开始接触ACM就买了<算法竞赛入门经典>这本书,当时只能看懂前几章,而且题目也没做,粗鄙地以为这本书不适合自己.等到现在快大三了再回过头来看,发现刘老师还是很棒的! 扯远了... 题 ...

  3. c语言的幂乘积表达式,POJ 1845 Sumdiv [素数分解 快速幂取模 二分求和等比数列]

    大致题意: 求A^B的所有约数(即因子)之和,并对其取模 9901再输出. 解题基础: 1) 整数的唯一分解定理: 任意正整数都有且只有一种方式写出其素因子的乘积表达式. ,其中 为素数 2) 约数和 ...

  4. 【密码学】C 语言实现 RSA 模幂运算

    RSA模幂运算 1. 实验内容 按照平方乘算法和模重复平方法,分别计算am mod n 2. RSA介绍 RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest).阿迪·萨莫尔(Adi ...

  5. RSA大数运算实现(1024位n)(5)蒙哥马利模幂

    文章目录 简介 算法 说明 符号定义 蒙哥马利模乘 蒙哥马利模乘算法 蒙哥马利约简 REDC(T)算法 效率 代码实现 REDC 蒙哥马利模乘 模幂 运行结果 简介   在之前的(1)--(4)中,一 ...

  6. POJ3641 UVA11287 HDU1905 Pseudoprime numbers【素数判定+快速模幂】

    问题链接:POJ3641 UVA11287 HDU1905 Pseudoprime numbers. 问题简述:参见上述链接. 问题分析: 这个问题是验证伪素数问题.p是伪素数的条件是,p不是素数并且 ...

  7. UVa10006 Carmichael Numbers【素数判定+快速模幂】

    问题链接:UVa10006 Carmichael Numbers. 问题简述:参见上述链接. 问题分析: 这是一个卡尔迈勒数判定问题,只要读懂题意就简单了. 卡尔迈勒数是数论中的一个重要概念. 程序说 ...

  8. 求解斐波那契数列(Fibonacci Numbers)算法居然有9种,你知道哪几种吗?

    By LongLuo 斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为&q ...

  9. UVA11029 Leading and Trailing【快速模幂+数学】

    Apart from the novice programmers, all others know that you can't exactly represent numbers raised t ...

最新文章

  1. 应届前端面试——看这篇就够了(一)
  2. 从内存中加载DLL Delphi版(转)
  3. oracle中特殊字符处理
  4. linux删除多余日志,linux 删除日志
  5. Win10启用linux子系统(Linuxer福利)
  6. imx6ul:uboot-2013.10启动过程解析
  7. 多元统计分析基于r课后答案_智慧树多元统计分析及R语言建模课后答案
  8. 多浏览器支持ActiveX控件
  9. 粪斗这杆大旗下,注定只是少部分人的盛宴
  10. rust中slice panicked at 'byte index 5 is not a char boundary' 问题解决办法
  11. js第8章事件案例:获取触发事件的元素,阻止事件冒泡和默认行为的实现、缓动的小球、图片放大特效、按Enter键切换
  12. 超详细的css知识树状图~CSS选择器盒子模型、浮动、定位和装饰
  13. “科林明伦杯”哈尔滨理工大学第十届程序设计竞赛——H.直线【JAVA大数 | Python】
  14. 利用pcs+pacemaker+corosync实现(HA)高可用集群
  15. CloudSim Plus任务调度策略对比
  16. Twitter推特爬虫工具开发
  17. Software for Developing
  18. Linux(Ubuntu) 下安装最新版的R 、RStudio 以及R包
  19. Golang编程基础第一篇——Golang快入门
  20. java双人对战五子棋(socket通信)

热门文章

  1. ifix与mysql_将 iFIX 与 Proficy Historian 配合使用
  2. SVN Cleanup失败解决方法
  3. Starling浅尝
  4. 为什么eolinker发送老是等待_eolinker环境管理之开发、测试和生产环境
  5. element ui 菜单封装_vue模块化(echart+element ui)
  6. java退出登录_java实现注销登录
  7. 工作中遇到的问题 二 乱码问题
  8. 关于sql的正则表达式
  9. Hive 开窗必需掌握的rankdense_rankrow_number
  10. OpenCC繁体文章转换成简体字