HDU --- 4686 【矩阵快速幂+求和】
来源:互联网 发布:网络犯罪调查第一季 编辑:程序博客网 时间:2024/05/21 19:25
传送门
思路: 这道题也是给了公式, 然后跟着公式推导, 也很容易的知道矩阵的构造, 注意的是在矩阵中把Sn加上, 这样就可以直接算出答案了.
AC Code
#include<cstdio>#include<cmath>#include<algorithm>#include<iostream>#include<cstring>#include<set>#include<queue>#include<functional>#include<vector>#include<stack>#include<map>#include<cstdlib>#define CLR(x) memset(x,0,sizeof(x))#define ll long long int#define PI acos(-1.0)#define db double#define mod 1000000007using namespace std;const int maxn=1e5+5;const db eps=1e-6;const int inf=1e9;const ll INF=1e15;int cas=1;int ssize;struct Ma{ ll a[10][10]; void cc() { memset(a,0,sizeof(a)); } Ma operator * (const Ma & b) const { Ma tmp; tmp.cc(); for(int i=0;i<ssize;i++){ for(int j=0;j<ssize;j++){ for(int k=0;k<ssize;k++){ tmp.a[i][j] += (a[i][k] * b.a[k][j]); tmp.a[i][j] %= mod; } } } return tmp; }}res,x;ll A0,AX,AY,B0,BX,BY;void init(){ ssize = 5; res.cc(); x.cc(); for(int i=0;i<ssize;i++) res.a[i][i] = 1 ; x.a[0][0] = 1; x.a[1][0] = x.a[1][1] = AX*BX%mod; x.a[2][0] = x.a[2][1] = AX*BY%mod; x.a[2][2] = AX%mod; x.a[3][0] = x.a[3][1] = BX*AY%mod; x.a[3][3] = BX%mod; x.a[4][0] = x.a[4][1] = AY*BY%mod; x.a[4][2] = AY%mod; x.a[4][3] = BY%mod; x.a[4][4] = 1; //构造矩阵. }void qpow(ll n){ while(n) { //printf("%lld\n",n); if(n&1) res = res * x; x = x*x ; n /= 2; }}int main(){ ll n; ll b[10]; while(~scanf("%lld",&n)){ scanf("%lld%lld%lld%lld%lld%lld",&A0,&AX,&AY,&B0,&BX,&BY); if(n == 0){ //注意特判等于0的时候, 否则会T. printf("0\n"); continue; } b[0] = b[1] = A0*B0%mod; b[2] = A0%mod; b[3] = B0%mod; b[4] = 1; init(); qpow(n-1); ll ans = 0; for(int i=0;i<ssize;i++){ ans += (res.a[i][0] * b[i]); ans %= mod; } printf("%lld\n",ans); }}
阅读全文
0 0
- HDU --- 4686 【矩阵快速幂+求和】
- hdu 5411 矩阵幂求和
- [HDU 5411] CRB and Puzzle (矩阵加速DP + 前缀和矩阵|等比求和快速幂 )
- hdu 4686(矩阵快速幂)
- HDU 4686(矩阵快速幂)
- hdu 奥运(矩阵快速幂+等比数列快速求和+数论)
- poj 3233 矩阵快速幂 + 二分求和
- 快速矩阵幂+二分等比数列求和
- HDU 1588 Gauss Fibonacci(矩阵快速幂+二分等比序列求和)
- HDU 2254 奥运(矩阵快速幂+二分等比序列求和)
- HDU 2243 考研路茫茫——单词情结 (AC自动机+矩阵快速幂求和)
- hdu 1588 Gauss Fibonacci(斐波那契,等比数列求和,矩阵快速幂)
- HDU 4686 (推公式+矩阵快速幂)
- HDU 4686(矩阵快速幂)
- 【矩阵快速幂】hdu 1575
- 【矩阵快速幂】hdu 1757
- hdu 2604 矩阵快速幂
- hdu-1575矩阵快速幂
- 那些创业的艰辛整理
- Android
- 软件工程师(程序员)的烦恼
- popwindow
- linux主机名修改
- HDU --- 4686 【矩阵快速幂+求和】
- 日记
- iOS开发 UISearchBar好用的技能
- 阿里2017笔试题(一)
- MD5和Base64
- Java swing界面程序开发---生成Jar包
- 判断手机号码格式、身份证号码格式是否正确
- sohu一面
- 一个成功的研发团队应具备的9大属性