日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

HDU - 4686 Arc of Dream(矩阵快速幂,水题)

發(fā)布時(shí)間:2024/4/11 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HDU - 4686 Arc of Dream(矩阵快速幂,水题) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

題目鏈接:點(diǎn)擊查看

題目大意:給出定義:

  • 現(xiàn)在依次給出n,A0,AX,AY,B0,BX,BY

    求Aod的第n項(xiàng)對(duì)1e9+7取模后的結(jié)果

    題目分析:

    簡(jiǎn)單矩陣快速冪

    首先化簡(jiǎn)一下:

    初始矩陣:(取n=1即可)

    1

    輔助矩陣:

    10000
    1AX*BX000
    0AX*BYAX00
    0BX*AY0BX0
    0AY*BYAYBY1

    答案矩陣:

    1

    注意幾個(gè)小坑:

  • 需要特判n==0時(shí)輸出0
  • 初始參數(shù)給的很大,相乘后需要立即取模,不然在運(yùn)算的過程中會(huì)爆long long
  • 然后套模板即可,上代碼:

    #include<iostream> #include<cstdlib> #include<string> #include<cstring> #include<cstdio> #include<algorithm> #include<climits> #include<cmath> #include<cctype> #include<stack> #include<queue> #include<list> #include<vector> #include<set> #include<map> #include<sstream> #define Pi acos(-1.0) using namespace std;typedef long long LL;const int inf=0x3f3f3f3f;const int mod=1e9+7;const int N=5;struct Ma {LL a[N][N];Ma(){memset(a,0,sizeof(a));}friend Ma operator*(const Ma& a,const Ma& b){Ma ans;for(int i=0;i<N;i++)for(int j=0;j<N;j++){ans.a[i][j]=0;for(int k=0;k<N;k++){ans.a[i][j]=(ans.a[i][j]+a.a[i][k]*b.a[k][j]%mod)%mod;}}return ans;} };Ma q_pow(Ma a,LL b) {Ma ans;for(int i=0;i<N;i++)ans.a[i][i]=1;while(b){if(b&1)ans=ans*a;a=a*a;b>>=1;}return ans; }int main() { // freopen("input.txt","r",stdin);LL n;while(scanf("%lld",&n)!=EOF){LL a0,ax,ay,b0,bx,by;scanf("%lld%lld%lld%lld%lld%lld",&a0,&ax,&ay,&b0,&bx,&by);if(n==0)//特判0 {printf("0\n");continue;}Ma st;st.a[0][0]=0;st.a[0][1]=a0*b0%mod;//日常模一模st.a[0][2]=a0;st.a[0][3]=b0;st.a[0][4]=1;Ma ans;ans.a[0][0]=1;ans.a[1][0]=1;ans.a[1][1]=ax*bx%mod;//記得取模ans.a[2][1]=ax*by%mod;ans.a[3][1]=bx*ay%mod;ans.a[4][1]=ay*by%mod;ans.a[2][2]=ax;ans.a[4][2]=ay;ans.a[3][3]=bx;ans.a[4][3]=by;ans.a[4][4]=1;ans=q_pow(ans,n);printf("%lld\n",(st*ans).a[0][0]);}return 0; }

    ?

    總結(jié)

    以上是生活随笔為你收集整理的HDU - 4686 Arc of Dream(矩阵快速幂,水题)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。