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;
}

矩阵快速幂

 #include<stdio.h>
#include<string.h>
typedef long long ll;
int mod;
struct mat{
int r,c;
ll m[][];
void clear(){
for(int i=;i<=r;i++)memset(m[i],,sizeof(m[i]));
}
}; mat MatMul(mat m1,mat m2){
mat tmp;
tmp.r=m1.r;
tmp.c=m2.c;
int i,j,k;
for(i=;i<=tmp.r;i++){
for(j=;j<=tmp.c;j++){
ll t=;
for(k=;k<=m1.c;k++){
t=(t+(m1.m[i][k]*m2.m[k][j])%mod)%mod;
}
tmp.m[i][j]=t;
}
}
return tmp;
} mat MatQP(mat a,int n){
mat ans,tmp=a;
ans.r=ans.c=a.r;
memset(ans.m,,sizeof(ans.m));
for(int i=;i<=ans.r;i++){
ans.m[i][i]=;
}
while(n){
if(n&)ans=MatMul(ans,tmp);
n>>=;
tmp=MatMul(tmp,tmp);
}
return ans;
} int main(){
mat a;
a.r=;a.c=;
a.m[][]=;
a.m[][]=;
a.m[][]=;
mat t;
t.r=;
t.c=;
t.clear();
t.m[][]=;
t.m[][]=;
t.m[][]=;
t.m[][]=;
t.m[][]=;
int n;
while(scanf("%d%d",&n,&mod)!=EOF){
mat tmp=MatQP(t,n/);
tmp=MatMul(tmp,a);
printf("%lld\n",tmp.m[n%+][]);
}
return ;
}

最新文章

  1. Python学习【第五篇】循环语句
  2. Numpy Study 2----* dot multiply区别
  3. centos 6.5 msyql5.6安装
  4. TINYINT,SMALLINT,MEDIUMINT,INT,INTEGER,BIGINT;text,longtext,mediumtext,ENUM,SET等字段类型区别
  5. Leetcode Minimum Path Sum
  6. getServletPath getRequestURI getRequestURL区别
  7. [Android Tips] 10. Pull out /data/data/${package_name} files without root access
  8. ODBC 小例
  9. Fix: Compile project encounter undefined reference to&ldquo;xxx&rdquo;error
  10. 浅谈Linux下的五种I/O模型
  11. (一)Bootstrap简介
  12. MSSQLSERVER数据库- 触发器
  13. Android SQLite的使用1(非原创)
  14. CairoSVG - Convert SVG to PNG or PDF - Contents
  15. Denny Zhang:一辈子做一个自由职业者
  16. C++中为什么构造函数初始化列表
  17. Ubuntu Hash Sum mismatch 解决方法
  18. web前端面试官挖的那些坑(js)
  19. 关闭Cadence Orcad Capture CIS原理图弹出startpage页面的方法
  20. Truncated Power Method for Sparse Eigenvalue Problems

热门文章

  1. flask项目结构(四)使用sqlalchemy和alembic
  2. C++各种类继承关系的内存布局
  3. 一: Docker的概念
  4. block,inline-block,行内元素区别及浮动
  5. dapper 简单多表查询
  6. chmod +x 和 chmod u+x的区别
  7. Java中泛型Class&lt;T&gt;、T与Class&lt;?&gt;
  8. MPX
  9. CodeForces - 780C Andryusha and Colored Balloons(dfs染色)
  10. elasticsearch学习笔记——安装,初步使用