hdu4990 Reading comprehension 矩阵快速幂
2024-10-16 12:52:16
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 ;
}
最新文章
- Python学习【第五篇】循环语句
- Numpy Study 2----* dot multiply区别
- centos 6.5 msyql5.6安装
- TINYINT,SMALLINT,MEDIUMINT,INT,INTEGER,BIGINT;text,longtext,mediumtext,ENUM,SET等字段类型区别
- Leetcode Minimum Path Sum
- getServletPath getRequestURI getRequestURL区别
- [Android Tips] 10. Pull out /data/data/${package_name} files without root access
- ODBC 小例
- Fix: Compile project encounter undefined reference to&ldquo;xxx&rdquo;error
- 浅谈Linux下的五种I/O模型
- (一)Bootstrap简介
- MSSQLSERVER数据库- 触发器
- Android SQLite的使用1(非原创)
- CairoSVG - Convert SVG to PNG or PDF - Contents
- Denny Zhang:一辈子做一个自由职业者
- C++中为什么构造函数初始化列表
- Ubuntu Hash Sum mismatch 解决方法
- web前端面试官挖的那些坑(js)
- 关闭Cadence Orcad Capture CIS原理图弹出startpage页面的方法
- Truncated Power Method for Sparse Eigenvalue Problems
热门文章
- flask项目结构(四)使用sqlalchemy和alembic
- C++各种类继承关系的内存布局
- 一: Docker的概念
- block,inline-block,行内元素区别及浮动
- dapper 简单多表查询
- chmod +x 和 chmod u+x的区别
- Java中泛型Class<;T>;、T与Class<;?>;
- MPX
- CodeForces - 780C Andryusha and Colored Balloons(dfs染色)
- elasticsearch学习笔记——安装,初步使用