题意:

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

分析:由于斐波那契数列的每一项都是由前两项相加得来,并且每一项都对n取模,所有 每一项的情况一共有n种,而相邻两项若组成有序数对,则不同的数对的情况也只有 n ^ 2种,所以只需要计算n * n项就可以找到数列规律。

题目:

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) for every 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) and 1 ≤ n ≤ 1000.

Output

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

Sample Input

3

1 1 2

2 3 1000

18446744073709551615 18446744073709551615 1000

Sample Output

1

21

250

AC代码

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
typedef unsigned long long ull;
int t;
ull m,n;
ull dp[1000010];/*范围*/
int k;
int dfs(ull a,ull b,int c)
{int ans=1;int q=a%c;while(b){if(b&1)ans=ans*q%c;q=q*q%c;b>>=1;/*care 别忘了加=,>>是一个数学运算符号*/}return ans;
}
int main()
{scanf("%d",&t);while(t--){scanf("%llu%llu%d",&m,&n,&k);if(m==0||k==1){printf("0\n");continue;}dp[0]=0;dp[1]=1;int c;for(int i=2; i<=k*k; i++){dp[i]=(dp[i-1]+dp[i-2])%k;if(dp[i]==1&&dp[i-1]==0)/*已经找出一个周期长度了,在k*k内一定找得到*/{c=i-1;break;}}int ans=dfs(m,n,c);printf("%llu\n",dp[ans]);}return 0;
}

Colossal Fibonacci Numbers! UVA - 11582(斐波那契求模)+快速幂+周期规律相关推荐

  1. Python 探讨斐波拉契数列模素数的周期问题

    Python 探讨斐波拉契数列模素数的周期问题之目录 前言 一.生成斐波拉契数列 二.创建素数列表 三.搜索周期数列的循环节 3.1 斐波拉契数列模 p p p 的周期 3.2 循环节的搜寻代码 3. ...

  2. Pandas 分析斐波那契数列模整数的周期问题

    Pandas 分析斐波那契数列模整数的周期问题 引言 一.改进 Pisano 周期计算 二.计算 Pisano 周期的循环节 三.快速计算任意斐波那契数模 m m m 的余数 四.计算模 100 万以 ...

  3. HDU4549 M斐波那契数列(矩阵快速幂+费马小定理)

    Problem Description M斐波那契数列F[n]是一种整数数列,它的定义如下: F[0] = a F[1] = b F[n] = F[n-1] * F[n-2] ( n > 1 ) ...

  4. YBTOJ:斐波拉契(矩阵快速幂)

    文章目录 题目描述 题目描述 代码 题目描述 题目描述 关键在于如何转化为本题的题目... 设 y=(1-根号5)/2$$ 再令: A(n)=xn +++ yn 通过尝试可以发现,A其实就是一个1,3 ...

  5. 牛客15666 又见斐波那契(矩阵快速幂)

    链接:https://ac.nowcoder.com/acm/problem/15666 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...

  6. 蓝桥杯历届试题----斐波那契(矩阵快速幂)

    问题描述 斐波那契数列大家都非常熟悉.它的定义是: f(x) = 1 -. (x=1,2) f(x) = f(x-1) + f(x-2) -. (x>2) 对于给定的整数 n 和 m,我们希望求 ...

  7. 奶牛家族(斐波那契数列的快速幂乘矩阵算法)

    TX面试题: 已知有一头牛4年后开始生小牛,一次只能生一只,问20年后一共有多少头牛? 这种问题就是简单的递归: 这头奶牛在第四年后能不断生子直到第二十年,其子出生4年后又能不断生子-- 代码如下: ...

  8. HDU 4549 M斐波那契数列(矩阵快速幂费马小定理)

    ps:今天和战友聊到矩阵快速幂,想到前几天学长推荐去刷矩阵专题,挑了其中唯一一道中文题,没想到越过山却被河挡住去路... 题目链接:[kuangbin带你飞]专题十九 矩阵 R - M斐波那契数列 T ...

  9. 斐波那契数列矩阵快速幂

    题意 用矩阵乘法求fibonacci数列的第n项. Solution 矩乘入门题啊,题目把题解已经说的很清楚里= =. 矩乘其实很简单,通过自己YY或者是搜索对于一个递推公式求出它所对应的矩阵,然后套 ...

最新文章

  1. XML的二十个热点问题
  2. FD.io/VPP — L2 vSwitch
  3. 【转】android手势处理揭秘
  4. android 文件mimetype_android获取文件getMimeType的两种方法
  5. node转发请求 .csv格式文件下载 中文乱码问题 + 文件上传笔记
  6. Runtime消息动态解析与转发流程
  7. PC智能自媒体高效运营管理工具
  8. Storm集群使用DRPC功能Version1.0.1
  9. 通过一个IT管理服务提供商攻陷190个澳大利亚组织机构的邮件供应链
  10. Scala中的“=”和“-”
  11. 黑马程序员-Java学习笔记之抽象类,接口,多态和内部类
  12. 2. assertion 断言
  13. [转载]最小生成树-Prim算法和Kruskal算法
  14. java不能变成class_java.lang.Class不能转换为java.lang.reflect.ParameterizedType
  15. 路由器的软件测试,路由器测试方法 - 软件测试网 _领测软件测试网站-中国软件测试技术第一门户...
  16. 五金行业智慧采购解决方案:应用集中采购协同管理系统激活企业数字化采购价值
  17. Windows10如何添加五笔?
  18. Kyrie Irving邀请粉丝加入Lineage Logistics的Share A Meal运动,帮助受COVID-19疫情影响的人们
  19. Recovering High Dynamic Range Radiance Maps from Photographs
  20. linux崩溃mysql导出_Linux 文件系统引起的云盘文件系统异常导致 MySQL 数据页损坏事故恢复复盘...

热门文章

  1. C++之operator关键字(重载操作符) 使用总结
  2. Android之百度地图定位最详细使用总结
  3. 迅捷路由器 服务器无响应,如果路由器重启还是上不了网 几招搞定
  4. c#队列取值_C# 队列
  5. python导入自定义模块_Python3 导入自定义的包
  6. 这些数学趣图,数学老师看了后会怎么想?
  7. 怪不得超市不让带宠物...
  8. 如何使用TensorFlow玩转深度学习?
  9. 如何解读决策树和随机森林的内部工作机制?
  10. python生成器yield原理_Python generator生成器和yield表达式详解