UVA11582 Colossal Fibonacci Numbers!【快速模幂+数列模除】
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!【快速模幂+数列模除】相关推荐
- Colossal Fibonacci Numbers! UVA - 11582(斐波那契求模)+快速幂+周期规律
题意: 给出64位整数a.b以及不超过1000的正整数n,求斐波那契数列第a ^ b项模n的结果. 输入:情况数T,之后T行每行a.b.n. 输出:斐波那契数列第a ^ b项模n的结果. 分析:由于斐 ...
- UVA 11582 Colossal Fibonacci Numbers!【数学】
大一刚开始接触ACM就买了<算法竞赛入门经典>这本书,当时只能看懂前几章,而且题目也没做,粗鄙地以为这本书不适合自己.等到现在快大三了再回过头来看,发现刘老师还是很棒的! 扯远了... 题 ...
- c语言的幂乘积表达式,POJ 1845 Sumdiv [素数分解 快速幂取模 二分求和等比数列]
大致题意: 求A^B的所有约数(即因子)之和,并对其取模 9901再输出. 解题基础: 1) 整数的唯一分解定理: 任意正整数都有且只有一种方式写出其素因子的乘积表达式. ,其中 为素数 2) 约数和 ...
- 【密码学】C 语言实现 RSA 模幂运算
RSA模幂运算 1. 实验内容 按照平方乘算法和模重复平方法,分别计算am mod n 2. RSA介绍 RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest).阿迪·萨莫尔(Adi ...
- RSA大数运算实现(1024位n)(5)蒙哥马利模幂
文章目录 简介 算法 说明 符号定义 蒙哥马利模乘 蒙哥马利模乘算法 蒙哥马利约简 REDC(T)算法 效率 代码实现 REDC 蒙哥马利模乘 模幂 运行结果 简介 在之前的(1)--(4)中,一 ...
- POJ3641 UVA11287 HDU1905 Pseudoprime numbers【素数判定+快速模幂】
问题链接:POJ3641 UVA11287 HDU1905 Pseudoprime numbers. 问题简述:参见上述链接. 问题分析: 这个问题是验证伪素数问题.p是伪素数的条件是,p不是素数并且 ...
- UVa10006 Carmichael Numbers【素数判定+快速模幂】
问题链接:UVa10006 Carmichael Numbers. 问题简述:参见上述链接. 问题分析: 这是一个卡尔迈勒数判定问题,只要读懂题意就简单了. 卡尔迈勒数是数论中的一个重要概念. 程序说 ...
- 求解斐波那契数列(Fibonacci Numbers)算法居然有9种,你知道哪几种吗?
By LongLuo 斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为&q ...
- UVA11029 Leading and Trailing【快速模幂+数学】
Apart from the novice programmers, all others know that you can't exactly represent numbers raised t ...
最新文章
- 应届前端面试——看这篇就够了(一)
- 从内存中加载DLL Delphi版(转)
- oracle中特殊字符处理
- linux删除多余日志,linux 删除日志
- Win10启用linux子系统(Linuxer福利)
- imx6ul:uboot-2013.10启动过程解析
- 多元统计分析基于r课后答案_智慧树多元统计分析及R语言建模课后答案
- 多浏览器支持ActiveX控件
- 粪斗这杆大旗下,注定只是少部分人的盛宴
- rust中slice panicked at 'byte index 5 is not a char boundary' 问题解决办法
- js第8章事件案例:获取触发事件的元素,阻止事件冒泡和默认行为的实现、缓动的小球、图片放大特效、按Enter键切换
- 超详细的css知识树状图~CSS选择器盒子模型、浮动、定位和装饰
- “科林明伦杯”哈尔滨理工大学第十届程序设计竞赛——H.直线【JAVA大数 | Python】
- 利用pcs+pacemaker+corosync实现(HA)高可用集群
- CloudSim Plus任务调度策略对比
- Twitter推特爬虫工具开发
- Software for Developing
- Linux(Ubuntu) 下安装最新版的R 、RStudio 以及R包
- Golang编程基础第一篇——Golang快入门
- java双人对战五子棋(socket通信)
热门文章
- ifix与mysql_将 iFIX 与 Proficy Historian 配合使用
- SVN Cleanup失败解决方法
- Starling浅尝
- 为什么eolinker发送老是等待_eolinker环境管理之开发、测试和生产环境
- element ui 菜单封装_vue模块化(echart+element ui)
- java退出登录_java实现注销登录
- 工作中遇到的问题 二 乱码问题
- 关于sql的正则表达式
- Hive 开窗必需掌握的rankdense_rankrow_number
- OpenCC繁体文章转换成简体字