首页 > 其他分享 >Reading comprehension HDU - 4990

Reading comprehension HDU - 4990

时间:2023-02-26 14:46:20浏览次数:31  
标签:HDU include matrix int m1 comprehension ans Reading

    • ans=0; 
    •     for(i=1;i<=n;i++) 
    •       { 
    •         if(i&1)ans=(ans*2+1)%m; 
    •         else ans=ans*2%m; 
    •       } 
 
  使用矩阵快速幂计算 f[n ]


   f[n] = f[n-1]+f[n-2]*2 +1

  { f[n] ,f[n-1] ,1 } = { f[n-1] ,f[ n- 2] ,1 } * { {1,2,1} ,{0,1 ,0} ,{0,0,1} }

#include <iostream>
 #include <cmath>
 #include <algorithm>
 using namespace std; 
 #define N 5
  int mod;
 
 #define int long long
  struct matrix {
  	int a[N+2][N+2];
  };
  int n;
  matrix m1; 
  
  void init_e(matrix &x){
  	
  	int i,j;
  	for(i=1;i<=3;i++)
  	 for(j=1;j<=3;j++) {
  	 	 x.a[i][j]=0;
  	 	 if(i==j) x.a[i][j]=1;
  	 }
  }
  matrix mul(matrix &x,matrix &y){
 	int i,j,k;
 	matrix z;
 	
 	for(i=1;i<=3;i++)
 	 for(j=1;j<=3;j++){
 	 	z.a[i][j]=0;
 	 	for(k=1;k<=3;k++)
 	 	 z.a[i][j]+=x.a[i][k]*y.a[k][j], z.a[i][j]%=mod;
 	 }
 	
 	return z;
 }
   matrix ksm(matrix &x,int k){
 	matrix tmp=x, ans;
 	init_e(ans);
 	
 	while(k){
 		if(k&1) ans=mul(ans,tmp);
 		
 		tmp=mul(tmp,tmp); 
 		k/=2;
 	}
 	return ans;
 }
 
  signed main(){
 	std::ios::sync_with_stdio(0);
 	
 	while(cin>>n>>mod){
 		
	 	m1.a[1][1]=1,m1.a[1][2]=2,m1.a[1][3]=1;
	 	m1.a[2][1]=1,m1.a[2][2]=0,m1.a[2][3]=0;
	 	m1.a[3][1]=0,m1.a[3][2]=0,m1.a[3][3]=1;
	 	
	 	matrix ans =ksm(m1,n-1);
	 	cout<<(ans.a[1][1]*1+ans.a[1][2]*0+
	 	ans.a[1][3]*1)%mod;
	 	
	 	cout<<endl;
 	}
  }	
 
 

 



标签:HDU,include,matrix,int,m1,comprehension,ans,Reading
From: https://www.cnblogs.com/towboa/p/17156668.html

相关文章

  • HDU 4081 Qin Shi Huang's National Road System(次小树,4级)
    A- QinShiHuang'sNationalRoadSystemTimeLimit:1000MS     MemoryLimit:32768KB     64bitIOFormat:%I64d&%I64uSubmit ​​Status​​......
  • hdu 4284 Travel(压缩DP,4级)
    TravelTimeLimit:10000/5000MS(Java/Others)    MemoryLimit:32768/32768K(Java/Others)TotalSubmission(s):2641    AcceptedSubmission(s):724......
  • hdu 2608 0 or 1(数论)
    0or1TimeLimit:6000/2000MS(Java/Others)    MemoryLimit:32768/32768K(Java/Others)TotalSubmission(s):1659    AcceptedSubmission(s):418Pro......
  • HDU 2888 Check Corners (二维RMQ,3级)
    A-CheckCornersCrawlinginprocess...CrawlingfailedTimeLimit:10000MS    MemoryLimit:32768KB    64bitIOFormat:%I64d&%I64u​​Submit......
  • python各种推导式(comprehensions)
    各种推导式(comprehensions)推导式(又称解析式)是Python的一种独有特性,如果我被迫离开了它,我会非常想念。推导式是可以从一个数据序列构建另一个新的数据序列的结构体。共......
  • C# System.Threading.Timer z
    C#System.Threading.Timer详解及示例阅读目录前言一、两类重载1、Timer(TimerCallback)2、Timer(TimerCallback,Object,Int32,Int32)二、属性ActiveCo......
  • HDUOJ 2000-2100
    2024C语言合法标识符ProblemDescription输入一个字符串,判断其是否是C的合法标识符。 Input输入数据包含多个测试实例,数据的第一行是一个整数n,表示测试实例的个数,然......
  • [hdu 5307] He is Flying (FFT)
    题意给出长度为的数列,对于任意,求出区间和为的区间的长度之和题目分析有了几道fft题的经验,套路就是把可加性的计算化为幂的次数做多项式卷积有分别把看成两个多项式,做FF......
  • [HDU 5608]Function(莫比乌斯反演 + 杜教筛)
    题目描述有求只有最多组数据题目分析如此一来就可以杜教筛了,然而仅仅这样还是会T,于是我们在想一想如何筛出前面一部分的值令,根据莫比乌斯反演于是用筛出前项就行了......
  • HDU 1238 Substrings
    SubstringsTimeLimit:2000/1000MS(Java/Others)    MemoryLimit:65536/32768K(Java/Others)TotalSubmission(s):7699    AcceptedSubmission(s):3474......