C - Reading comprehension

Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u

Appoint description: 
System Crawler  (2016-04-25)

Description

Read the program below carefully then answer the question. 
#pragma comment(linker, "/STACK:1024000000,1024000000") 
#include <cstdio> 
#include<iostream> 
#include <cstring> 
#include <cmath> 
#include <algorithm> 
#include<vector>

const int MAX=100000*2; 
const int INF=1e9;

int main() 

  int n,m,ans,i; 
  while(scanf("%d%d",&n,&m)!=EOF) 
  { 
    ans=0; 
    for(i=1;i<=n;i++) 
    { 
      if(i&1)ans=(ans*2+1)%m; 
      else ans=ans*2%m; 
    } 
    printf("%d\n",ans); 
  } 
  return 0; 
}

 

Input

Multi test cases,each line will contain two integers n and m. Process to end of file. 
[Technical Specification]
1<=n, m <= 1000000000
 

Output

For each case,output an integer,represents the output of above program.
 

Sample Input

1 10
3 100
 

Sample Output

1
5
思路:
if(i & 1) f[i] = f[i-1] * 2 + 1;
else f[i] = f[i-1] * 2;
 
所以这里有2个矩阵,关键的是什么,矩阵不满足交换律,所以先求出矩阵a和b的乘结果,然后在求a×b的n/2次方,如果n为奇数,补乘矩阵a即可。
  1. #include<map>
  2. #include<set>
  3. #include<string>
  4. #include<queue>
  5. #include<stack>
  6. #include<cmath>
  7. #include<vector>
  8. #include<cstdio>
  9. #include<time.h>
  10. #include<cstring>
  11. #include<iostream>
  12. #include<algorithm>
  13. #define INF 1000000001
  14. #define ll long long
  15. #define lson l,m,rt<<1
  16. #define rson m+1,r,rt<<1|1
  17. using namespace std;
  18. const int MAXN = ;
  19. struct Mat
  20. {
  21. ll a[][];
  22. };
  23. ll MOD;
  24. Mat operator *(Mat a,Mat b)
  25. {
  26. Mat c;
  27. memset(c.a,,sizeof(c.a));
  28. for(int i = ; i < ; i++){
  29. for(int j = ; j < ; j++){
  30. for(int k = ; k < ;k++){
  31. c.a[i][j] += (a.a[i][k] * b.a[k][j])%MOD;
  32. }
  33. }
  34. }
  35. return c;
  36. }
  37. Mat power(Mat b,ll n)
  38. {
  39. Mat c;
  40. c.a[][] = c.a[][] = ;
  41. c.a[][] = c.a[][] = ;
  42. while(n){
  43. if(n & ){
  44. c = c * b;
  45. }
  46. b = b * b;
  47. n >>= ;
  48. }
  49. return c;
  50. }
  51. ll mod_pow(ll x,ll n)
  52. {
  53. ll res = ;
  54. while(n){
  55. if(n & ) res = res * x % MOD;
  56. x = x * x % MOD;
  57. n >>= ;
  58. }
  59. return res;
  60. }
  61. ll mod_mul(ll a,ll b)
  62. {
  63. ll res = ;
  64. while(b){
  65. if(b & ){
  66. res = (res + a) % MOD;
  67. }
  68. b >>= ;
  69. a = (a + a) % MOD;
  70. }
  71. return res;
  72. }
  73. ll n;
  74. int main()
  75. {
  76. while(~scanf("%lld%lld",&n,&MOD)){
  77. if(n == ){
  78. cout<<<<endl;
  79. continue;
  80. }
  81. else if(n == ){
  82. cout<<%MOD<<endl;
  83. continue;
  84. }
  85. Mat a,b;
  86. a.a[][] = ;
  87. a.a[][] = ;
  88. a.a[][] = ;
  89. a.a[][] = ;
  90. b.a[][] = ;
  91. b.a[][] = ;
  92. b.a[][] = ;
  93. b.a[][] = ;
  94. a = power(a,n/);
  95. if(n % == ){
  96. ll ans = a.a[][] % MOD;
  97. printf("%lld\n",ans);
  98. }
  99. else {
  100. b = b * a;
  101. ll ans = b.a[][] % MOD;
  102. printf("%lld\n",ans);
  103. }
  104. }
  105. return ;
  106. }

hdu4990 矩阵的更多相关文章

  1. hdu4990矩阵快速幂

    就是优化一段代码,用矩阵快速幂(刚开始想到了转移矩阵以为是错的) 在搜题解时发现了一个神奇的网站:http://oeis.org/ 用来找数列规律 的神器.... 规律就是an=an-1+2*an-2 ...

  2. hdu4990 矩阵快速幂

    题意:       给你一短代码,让你优化这个代码,代码如下 #pragma comment(linker, "/STACK:1024000000,1024000000") #in ...

  3. HDU4990 Reading comprehension —— 递推、矩阵快速幂

    题目链接:https://vjudge.net/problem/HDU-4990 Reading comprehension Time Limit: 2000/1000 MS (Java/Others ...

  4. hdu4990 Reading comprehension 矩阵快速幂

    Read the program below carefully then answer the question.#pragma comment(linker, "/STACK:10240 ...

  5. C语言 · 矩阵乘法 · 算法训练

    问题描述 输入两个矩阵,分别是m*s,s*n大小.输出两个矩阵相乘的结果. 输入格式 第一行,空格隔开的三个正整数m,s,n(均不超过200). 接下来m行,每行s个空格隔开的整数,表示矩阵A(i,j ...

  6. 获取Canvas当前坐标系矩阵

    前言 在我的另一篇博文 Canvas坐标系转换 中,我们知道了所有的平移缩放旋转操作都会影响到画布坐标系.那在我们对画布进行了一系列操作之后,怎么再知道当前矩阵数据状态呢. 具体代码 首先请看下面的一 ...

  7. CSharpGL(32)矩阵与四元数与角度旋转轴的相互转换

    CSharpGL(32)矩阵与四元数与角度旋转轴的相互转换 三维世界里的旋转(rotate),可以用一个3x3的矩阵描述:可以用(旋转角度float+旋转轴vec3)描述.数学家欧拉证明了这两种形式可 ...

  8. “为什么DirectX里表示三维坐标要建一个4*4的矩阵?”

    0x00 前言 首先要说明的是,本文的标题事实上来自于知乎上的一个同名问题:为什么directX里表示三维坐标要建一个4*4的矩阵? - 编程 .因此,正如Milo Yip大神所说的这个标题事实上是存 ...

  9. js实现蛇形矩阵

    参加腾讯前端实习生笔试,真的是被虐了千百遍,除了一条js程序题,其他半点前端都没有,都是考算法,计算机原理,数据结构.下面贴上腾讯笔试最后三大条中的一条,实现一个蛇形矩阵的输出.蛇形矩阵的什么样这里我 ...

随机推荐

  1. NOIP2010引水入城[BFS DFS 贪心]

    题目描述 在一个遥远的国度,一侧是风景秀美的湖泊,另一侧则是漫无边际的沙漠.该国的行政区划十分特殊,刚好构成一个N 行M 列的矩形,如上图所示,其中每个格子都代表一座城市,每座城市都有一个海拔高度. ...

  2. FMS 客户端带宽计算、带宽限制

    FMS 客户端带宽计算.带宽限制 1. 带宽计算 FMS内置了带宽检测的特性(被称作"native bandwidth detection"),要进行带宽检测,客户端只要在成功连接 ...

  3. 百度搜索--jquery

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  4. HTML 学习笔记 CSS样式(框模型)

    CSS框模型( Box Model)规定了元素框处理元素的内容 内边距 边框 和 外边距的方式 CSS框模型概述 可以用下面的模型图概述

  5. Python的高级特性1:容易忽略的不可变类型

    python中有一些容易忽略的不可变类型(str,integer,tuple,None) #错误演示 In [45]: def demo(lst=[]): ....: lst.append(" ...

  6. Jenkins 安装

    1. 调整tomcat的jvm配置, 以免内存不够, 在catalina.sh中 #!bin/sh下添加 JAVA_OPTS="-server -Xms1024m -Xmx1024m -XX ...

  7. AI图片剪切

    来源:http://tieba.baidu.com/p/1203332701?pid=14163166977&cid=78618096662&from=prin#78618096662 ...

  8. 1927: [Sdoi2010]星际竞速

    1927: [Sdoi2010]星际竞速 Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 2040  Solved: 1257[Submit][Stat ...

  9. P3384 【模板】树链剖分

    P3384 [模板]树链剖分 题目描述 如题,已知一棵包含N个结点的树(连通且无环),每个节点上包含一个数值,需要支持以下操作: 操作1: 格式: 1 x y z 表示将树从x到y结点最短路径上所有节 ...

  10. CentOS搭建socket5代理服务器

    1.安装socket5依赖包 yum -y install gcc automake make pam-devel openldap-devel cyrus-sasl-devel   2.下载ss5并 ...