简单矩阵快速幂。

if(m==1) MOD=10;
if(m==2) MOD=100;
if(m==3) MOD=1000;
if(m==4) MOD=10000;

剩下的就是矩阵快速幂求斐波那契数列第n项取模

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<cmath>
  4. #include<vector>
  5. #include<algorithm>
  6. using namespace std;
  7.  
  8. long long MOD;
  9. long long x, y;
  10. int n,m;
  11.  
  12. long long mod(long long a, long long b)
  13. {
  14. if (a >= ) return a%b;
  15. if (abs(a) % b == ) return ;
  16. return (a + b*(abs(a) / b + ));
  17. }
  18.  
  19. struct Matrix
  20. {
  21. long long A[][];
  22. int R, C;
  23. Matrix operator*(Matrix b);
  24. };
  25.  
  26. Matrix X, Y, Z;
  27.  
  28. Matrix Matrix::operator*(Matrix b)
  29. {
  30. Matrix c;
  31. memset(c.A, , sizeof(c.A));
  32. int i, j, k;
  33. for (i = ; i <= R; i++)
  34. for (j = ; j <= C; j++)
  35. for (k = ; k <= C; k++)
  36. c.A[i][j] = mod((c.A[i][j] + mod(A[i][k] * b.A[k][j], MOD)), MOD);
  37. c.R=R; c.C=b.C;
  38. return c;
  39. }
  40.  
  41. void read()
  42. {
  43. scanf("%lld%lld%d%d", &x, &y, &n,&m);
  44. if(m==) MOD=;
  45. if(m==) MOD=;
  46. if(m==) MOD=;
  47. if(m==) MOD=;
  48. }
  49.  
  50. void init()
  51. {
  52. // n = n - 1;
  53. Z.A[][] = x, Z.A[][] = y; Z.R = ; Z.C = ;
  54. Y.A[][] = , Y.A[][] = , Y.A[][] = , Y.A[][] = ; Y.R = ; Y.C = ;
  55. X.A[][] = , X.A[][] = , X.A[][] = , X.A[][] = ; X.R = ; X.C = ;
  56. }
  57.  
  58. void work()
  59. {
  60. while (n)
  61. {
  62. if (n % == ) Y = Y*X;
  63. n = n >> ;
  64. X = X*X;
  65. }
  66. Z = Z*Y;
  67.  
  68. printf("%lld\n", mod(Z.A[][], MOD));
  69. }
  70.  
  71. int main()
  72. {
  73. int T;
  74. scanf("%d",&T);
  75. while(T--)
  76. {
  77. read();
  78. init();
  79. work();
  80. }
  81. return ;
  82. }

UVA 10689 Yet another Number Sequence的更多相关文章

  1. UVA - 10689 Yet another Number Sequence 矩阵快速幂

                      Yet another Number Sequence Let’s define another number sequence, given by the foll ...

  2. POJ-3070Fibonacci(矩阵快速幂求Fibonacci数列) uva 10689 Yet another Number Sequence【矩阵快速幂】

    典型的两道矩阵快速幂求斐波那契数列 POJ 那是 默认a=0,b=1 UVA 一般情况是 斐波那契f(n)=(n-1)次幂情况下的(ans.m[0][0] * b + ans.m[0][1] * a) ...

  3. UVA - 10689 Yet another Number Sequence (矩阵快速幂求斐波那契)

    题意:已知f(0) = a,f(1) = b,f(n) = f(n − 1) + f(n − 2), n > 1,求f(n)的后m位数. 分析:n最大为109,矩阵快速幂求解,复杂度log2(1 ...

  4. UVA 10689 Yet another Number Sequence 矩阵快速幂 水呀水

    #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> ...

  5. UVA 10706 Number Sequence (找规律 + 打表 + 查找)

    Problem B Number Sequence Input: standard input Output: standard output Time Limit: 1 second A singl ...

  6. uva 10706 Number Sequence(数学规律)

    题目连接:10706 - Number Sequence 题目大意:有一个有0 ~ 9组成的序列,1   1 2    1 2 3   1 2 3 4   1 2 3 4 5 ....就是第一位为1. ...

  7. HDU 1005 Number Sequence

    Number Sequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  8. POJ 1019 Number Sequence

    找规律,先找属于第几个循环,再找属于第几个数的第几位...... Number Sequence Time Limit: 1000MS Memory Limit: 10000K Total Submi ...

  9. HDOJ 1711 Number Sequence

    Number Sequence Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

随机推荐

  1. IIS访问PHP文件时,弹出用户名和密码提示框的解决方法

    找了一圈,以下的方法解决了IIS访问PHP弹用户名和密码提示框问题. 解决方法:给PHP安装目录everyone读取权限 这样不知道会不会出现安全问题,请大家谨慎.

  2. eclipse修改豆沙绿

    长时间的使用eclipse开发会很累吧  设置一个保护眼睛的豆沙绿色 不刺眼 是不是会更好一些呢 那么如何设置呢现在就教大家   工具/原料 eclipse jdk 方法/步骤 1 首先打开eclip ...

  3. linux C++通过ntp协议获取网络时间

    转自:http://blog.csdn.net/ccjjyy/article/details/42871993 #include <stdio.h> #include <sys/ty ...

  4. libMobileGestalt与UDID

    libMobileGestalt与UDID 没有评论 在iOS中,libMobileGestalt动态库, 用来取得各种系统变量,比如UDID, 磁盘使用量, 设备版本 在iOS7中,对于开发者来说, ...

  5. 别说你不知道java中的包装类,wrapper type,以及容易在自动拆箱中出现的问题

    很多时候,会有人问你,你知道什么是包装类吗? 或者高端一点问你你知道,wrapper type,是什么吗? 然后你就懵逼了,学了java很多时候都不知道这是啥. 其实问你的人,可能只是想问你,java ...

  6. setAttribute的兼容性

    class和className兼容方法: object.setAttribute("class","content") 在IE8.Chrome.火狐.Opera ...

  7. 一个web项目在myeclipse中add deployment时无法被识别出来的原因

    当我们一个web项目,在myeclipse中,add deployment时,可能发现,根本无法被识别成web项目,可能的原因有:   1. 项目的properties ->Myeclipse ...

  8. html5中拨打电话代码

    <a href="tel:18600000000">给我打电话</a>   <a href="sms:18600000000"&g ...

  9. Ubuntu防火墙ufw安装配置

    ubuntu 系统默认已安装ufw. 1.安装sudo apt-get install ufw2.启用sudo ufw enablesudo ufw default deny运行以上两条命令后,开启了 ...

  10. ASP.NET 的内置对象

    ASP.NET的内置对象介绍 1.Response 2.Request 3.Server 4.Application 5.Session 6.Cookie Request对象主要是让服务器取得客户端浏 ...