HDU 5895 Mathematician QSC
题目地址
欧拉函数+矩阵快速幂
1 #include<cstdio> 2 #include<algorithm> 3 #include<string.h> 4 #include<queue> 5 #define LL long long 6 using namespace std; 7 const int Nmax=10; 8 LL n,y,x,s,tmp; 9 int mod; 10 int oula_mod; 11 12 struct Matrix 13 { 14 int n,m; 15 long long map[Nmax][Nmax]; 16 Matrix(int x,int y) 17 { 18 n=x;m=y; 19 for(int i=1;i<=n;i++) 20 for(int j=1;j<=m;j++) 21 map[i][j]=0; 22 } 23 Matrix operator * (const Matrix b) 24 { 25 Matrix c(n,b.m); 26 if(m==b.n) 27 { 28 for(int i=1;i<=c.n;i++) 29 for(int j=1;j<=c.m;j++) 30 for(int k=1;k<=m;k++) 31 c.map[i][j]=(c.map[i][j]+(map[i][k]*b.map[k][j])%oula_mod)%oula_mod; 32 return c; 33 } 34 printf("error!!!!!!!!!!!!!!\n"); 35 } 36 }; 37 38 39 int oula(int n) 40 { 41 int ret=1,i; 42 for(i=2;i*i<=n;i++) 43 { 44 if(n%i==0) 45 { 46 n/=i,ret*=i-1; 47 while(n%i==0) n/=i,ret*=i; 48 } 49 } 50 if(n>1) ret*=n-1; 51 return ret; 52 } 53 54 55 56 57 Matrix get(long long n) 58 { 59 Matrix base(4,4); 60 base.map[1][1]=1;base.map[1][2]=1;base.map[1][3]=0;base.map[1][4]=0; 61 base.map[2][1]=0;base.map[2][2]=4;base.map[2][3]=1;base.map[2][4]=4; 62 base.map[3][1]=0;base.map[3][2]=1;base.map[3][3]=0;base.map[3][4]=0; 63 base.map[4][1]=0;base.map[4][2]=2;base.map[4][3]=0;base.map[4][4]=1; 64 Matrix ans(4,4); 65 for(int i=1;i<=ans.n;i++) 66 ans.map[i][i]=1; 67 68 while(n>0) 69 { 70 if(n & 1) 71 ans=ans*base; 72 base=base*base; 73 n>>=1; 74 } 75 76 return ans; 77 } 78 79 long long get_ans(long long times) 80 { 81 long long ans=1; 82 long long base=x; 83 while(times>0) 84 { 85 if(times & 1) 86 ans=(ans*base)%mod; 87 base=(base*base)%mod; 88 times>>=1; 89 } 90 return ans; 91 } 92 93 94 int main() 95 { 96 97 int t; 98 scanf("%d",&t); 99 while(t--) 100 { 101 scanf("%lld%lld%lld%lld",&n,&y,&x,&s); 102 mod=s+1; 103 oula_mod=oula(mod); 104 //printf("oula_mod:%d\n",oula_mod); 105 Matrix base(4,1); 106 base.map[1][1]=0; 107 base.map[2][1]=1; 108 base.map[3][1]=0; 109 base.map[4][1]=0; 110 Matrix ans=get(n*y)*base; 111 long long mi=ans.map[1][1]+oula_mod; 112 //printf("mi:%lld\n",mi ); 113 //continue; 114 printf("%lld\n",get_ans(mi)); 115 } 116 return 0; 117 }
转载于:https://www.cnblogs.com/BBBob/p/5935331.html
HDU 5895 Mathematician QSC相关推荐
- 【HDU - 5900】QSC and Master(区间dp)
题干: Every school has some legends, Northeastern University is the same. Enter from the north gate of ...
- HDU-5895 Mathematician QSC
题目大意: 已知f[0] = 0, f[1] = 1, f[i] = f[i-1] * 2 + f[i-2],且g[n] = g[n-1] + f[n] * f[n],现在给出n,y,x,s,问你x^ ...
- c语言定义int 输出4386,C语言 · 矩阵乘法
问题描述 输入两个矩阵,分别是m*s,s*n大小.输出两个矩阵相乘的结果. 输入格式 第一行,空格隔开的三个正整数m,s,n(均不超过200). 接下来m行,每行s个空格隔开的整数,表示矩阵A(i,j ...
- 2016.9.18 --- Shenyang ol
1001 Resident Evil 1002 List wants to travel 1003 hannnnah_j's Biological Test 1004 Mathematician QS ...
- HDU5900 QSC and Master(区间DP + 最小费用最大流)
题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=5900 Description Every school has some legends, ...
- HDU 4389 - X mod f(x)
题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=4389 2012多校,第9场,1010 . 问题是,询问区间内 存在多少个 哈沙德数(Harshad ...
- hdu 4389 囧,打表
http://acm.hdu.edu.cn/showproblem.php?pid=4389 题意 :一个数能被他各个位数之和整除则符合要求,给L,R,问区间里有多少个数符合要求. 囧,居然打表就能过 ...
- HDU——1106排序(istringstream的使用、STLvector练习)
排序 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submiss ...
- hdu 5438 Ponds 拓扑排序
Ponds Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/contests/contest_showproblem ...
最新文章
- python网络爬虫---selenium的使用
- acwing算法题--看图做题
- VS2010程序打包操作
- Intellij IDEA Debug 调试技巧
- JDBC的CRUD操作之PreparedStatement的保存操作
- c语言结构体编程,[编程] C语言的结构体详解
- vs 中自带的代码混淆器 Dotfuscator (图)
- python创建二维数组的方法_Python创建二维数组的正确姿势
- Hibernate的双向N-N关联(六)
- StackPanel与Grid交叉使用
- android 专业ps软件,手机专业ps修图
- 中国顶级***--小榕
- Java9 正式发布前的尝鲜之下载与配置环境变量
- mac 截图工具| Snipaste
- 如何获取大数据行业高薪岗位offer?
- C++扑克牌随机洗牌抽牌算法
- Hibernate用Query删除数据表中的数据的问题(EntityManager.clear())
- 使用MultiPowerOnOffTool工具 测试拔插网线对路由器的影响
- 借钱赚钱花钱6点认识
- excle计算机基础测试,计算机基础测试题--Excel--雨课堂版本--手机版课件.pptx
热门文章
- 如何有效练肩部肌肉增加肩宽并且避免斜方肌发达呢?
- 视频剪辑软件到底哪个功能强?容易上手并且不要钱的?
- 用信号量实现进程互斥、同步、前驱关系
- MySQL 5.7 解压版 安装教程(图文详细)[Windows](转载)
- PAT乙级1088 三人行 (20分)
- sql azure 语法_Azure SQL Server自动故障转移组
- sql dbcc_SQL Server中的DBCC命令的概念和基础
- sql2012 ssrs_您必须在SQL Server Reporting Services(SSRS)中记录的十件事
- alwayson高可用组_AlwaysOn可用性组–如何在集群实例和独立实例之间设置AG(第2部分)
- maven项目引用新模块,依赖的jar包与新模块中的jar包版本不一致