思路是按紫书上说的来。

参考了:https://blog.csdn.net/qwsin/article/details/51834161  的代码;

  1. #include <cstdio>
  2. #include <iostream>
  3. #include <cmath>
  4. using namespace std;
  5. typedef unsigned long long ll;
  6. const int MAXN=+;
  7.  
  8. ll a, b;
  9. int n,M;
  10. int f[MAXN*MAXN];
  11.  
  12. int pow_mod(ll p, ll q, int Mod)
  13. {
  14. if(!q) return ;
  15. int x = pow_mod(p, q/, Mod);
  16. int ans = x*x % Mod;
  17. if(q%)
  18. ans = ans*p % Mod;
  19. return ans;
  20. }
  21.  
  22. void solve()
  23. {
  24. cin>>a>>b>>n;
  25. if(n== || a==)
  26. {
  27. printf("0\n");
  28. return ;
  29. }
  30. f[]=; f[]=;
  31. int t=n*n;
  32. for(int i=; i<=t+; i++)
  33. {
  34. f[i]=(f[i-]+f[i-])%n;
  35. if(f[i]==f[] && f[i-]==f[])
  36. {
  37. M=i-;
  38. break;
  39. }
  40. }
  41. int k = pow_mod(a%M, b, M);
  42. cout<<f[k]<<endl;
  43.  
  44. }
  45.  
  46. int main()
  47. {
  48. int T;
  49. cin>>T;
  50. while(T--)
  51. solve();
  52.  
  53. return ;
  54. }

代码中的ll改成ull比较合适。

注意第30行的初始值,我因为f[0]=1 卡了好几个小时。

另一种是LRJ的代码,为了方便大家看,我直接copy过来了。

  1. // UVa11582 Colossal Fibonacci Numbers!
  2. // Rujia Liu
  3. #include<iostream>
  4. #include<cstring>
  5. #include<cstdio>
  6. using namespace std;
  7.  
  8. const int maxn = + ;
  9. typedef unsigned long long ULL;
  10.  
  11. int f[maxn][maxn*], period[maxn];
  12.  
  13. int pow_mod(ULL a, ULL b, int n) {
  14. if(!b) return ;
  15. int k = pow_mod(a, b/, n);
  16. k = k * k % n;
  17. if(b % ) k = k * a % n;
  18. return k;
  19. }
  20.  
  21. int solve(ULL a, ULL b, int n) {
  22. if(a == || n == ) return ; // attention!
  23. int p = pow_mod(a % period[n], b, period[n]);
  24. return f[n][p];
  25. }
  26.  
  27. int main() {
  28. for(int n = ; n <= ; n++) {
  29. f[n][] = ; f[n][] = ;
  30. for(int i = ; ; i++) {
  31. f[n][i] = (f[n][i-] + f[n][i-]) % n;
  32. if(f[n][i-] == && f[n][i] == ) {
  33. period[n] = i - ;
  34. break;
  35. }
  36. }
  37. }
  38. ULL a, b;
  39. int n, T;
  40. cin >> T;
  41. while(T--) {
  42. cin >> a >> b >> n;
  43. cout << solve(a, b, n) << "\n";
  44. }
  45. return ;
  46. }

其实大体上差不多,不过LRJ的关键代码是用二维数组,全部先列举出来。

UVa 11582 Colossal Fibonacci Numbers! 紫书的更多相关文章

  1. UVA 11582 Colossal Fibonacci Numbers(数学)

    Colossal Fibonacci Numbers 想先说下最近的状态吧,已经考完试了,这个暑假也应该是最后刷题的暑假了,打完今年acm就应该会退了,但是还什么都不会呢? +_+ 所以这个暑假,一定 ...

  2. UVa 11582 Colossal Fibonacci Numbers! 【大数幂取模】

    题目链接:Uva 11582 [vjudge] watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fil ...

  3. UVa #11582 Colossal Fibonacci Numbers!

    巨大的斐波那契数 The i'th Fibonacci number f (i) is recursively defined in the following way: f (0) = 0 and  ...

  4. UVA 11582 Colossal Fibonacci Numbers! 大斐波那契数

    大致题意:输入两个非负整数a,b和正整数n.计算f(a^b)%n.其中f[0]=f[1]=1, f[i+2]=f[i+1]+f[i]. 即计算大斐波那契数再取模. 一开始看到大斐波那契数,就想到了矩阵 ...

  5. UVa 11582 - Colossal Fibonacci Numbers!(数论)

    链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

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

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

  7. UVA 11582 Colossal Fibonacci Numbers!(循环节打表+幂取模)

    题目链接:https://cn.vjudge.net/problem/UVA-11582 /* 问题 输入a,b,n(0<a,b<2^64(a and bwill not both be ...

  8. UVA - 11582 Colossal Fibonacci Numbers! (巨大的斐波那契数!)

    题意:输入两个非负整数a.b和正整数n(0<=a,b<264,1<=n<=1000),你的任务是计算f(ab)除以n的余数,f(0) = 0, f(1) = 1,且对于所有非负 ...

  9. Colossal Fibonacci Numbers! UVA 11582 寻找循环节

    /** 题目:Colossal Fibonacci Numbers! UVA 11582 链接:https://vjudge.net/problem/UVA-11582 题意:f[0] = 1, f[ ...

随机推荐

  1. Django模板层2

    一.单表操作 1.1 开启test from django.test import TestCase import os # Create your tests here. if __name__ = ...

  2. Spring基础16——使用FactoryBean来创建

    1.配置bean的方式 配置bean有三种方式:通过全类名(class反射).通过工厂方法(静态工厂&实例工厂).通过FactoryBean.前面我们已经一起学习过全类名方式和工厂方法方式,下 ...

  3. 四、续绑定SignaIR的用户管理-(添加好友和消息盒子)

    一.聊天消息表(普通消息,申请消息,群聊消息) CREATE TABLE MSG_INFO ( MSG_Id INT PRIMARY KEY AUTO_INCREMENT, -- 消息标识 MSG_T ...

  4. MyBatis中批量insert

    在orcale和mybatis执行批量插入是不一样的. orcale如下:(这里要注意的是:useGeneratedKeys="false" ) 方式1:oracle批量插入使用 ...

  5. 大数据数据库HBase(一)——架构原理

    一.HBase简介 1.1.Hadoop生态系统 1.2.非关系型数据库知识面扩展  Cassandra hbase mongodb Couchdb,文件存储数据库 Neo4j非关系型图数据库 1.3 ...

  6. 使用pycharm编写自动化脚本

    1.:导入本地Python环境 2:安装Selenium 3:下来需要根据安装的浏览器版本,下载合适的chromedriver驱动程序. 4:接着需要将下载的chromedriver进行解压,并将文件 ...

  7. linux extglob模式 和rm反选,除了某个文件外的其他文件全部删除的命令

    1.extglob模式开启之后Shell可以另外识别出5个模式匹配操作符,能使文件匹配更加方便. 不然不识别 #开启命令: shopt -s extglob #关闭命令: shopt -u extgl ...

  8. BZOJ 2560: 串珠子 (状压DP+枚举子集补集+容斥)

    (Noip提高组及以下),有意者请联系Lydsy2012@163.com,仅限教师及家长用户. 2560: 串珠子 Time Limit: 10 Sec Memory Limit: 128 MB Su ...

  9. python 导入模块、包

    1. 模块:一个有逻辑的python文件,包含变量.函数.类等.2. 包:一个包含__init__.py的文件夹,存放多个模块 import 本质是路径搜索,查找sys.path下有无你导入的 pac ...

  10. Flask【第6篇】:Flask中的信号

    补充的flask实例化参数以及信号 一.实例化补充 instance_path和instance_relative_config是配合来用的.这两个参数是用来找配置文件的,当用app.config.f ...