習題日常第十三練

2021-10-08 14:56:47 字數 3051 閱讀 7325

這個題是個矩陣快速冪的典型題,主要難在如何找出矩陣遞推關係。具體**如下(矩陣一定要開long long )。

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define ll long long int

const

int mod=

1e9+9;

using

namespace std;

ll a[4]

[4],b[4]

[4],c[4]

[4]=

,,,}

;void

mypow

(ll n),,

,};while

(n)for

(i=0

;i<

4;i++

)for

(j=0

;j<

4;j++

) d[i]

[j]=p[i]

[j]%mod;

}memset

(p,0

,sizeof

(p))

;for

(i=0

;i<

4;i++

)for

(j=0

;j<

4;j++

)for

(k=0

;k<

4;k++

)for

(i=0

;i<

4;i++

)for

(j=0

;j<

4;j++

) b[i]

[j]=p[i]

[j]%mod;

n>>=1;

}memcpy

(a,d,

sizeof

(d));}

}int

main()

return0;

}

這個題是乙個組合數學的題,對於思維的轉換還是有點挑戰的。c(k,m)指的是從k個裡面挑m個,但是這k個又是從n個裡面挑出來的。那豈不是可以直接從n個裡面挑m個,再將n-m個分配給l個球,此時n-m不需要全部用完,所以分配種數有(n-m)的l次方種。具體計算的時候需要用到快速冪和費馬小定理。具體**如下。

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define ll long long int

const

int mod=

998244353

;using

namespace std;

ll mypow

(ll n,ll a)

return ans;

}int

main()

for(i=

1;i<=n-m;i++

)for

(i=1

;i<=m;i++)if

(nelse

return0;

}

這個題也是乙個關於矩陣快速冪的題。這個題給出的是數列第n項的求法,求前n項和。這些題主要難在對於矩陣該有量的確定以及求關係矩陣。接下來的就可以用矩陣快速冪解決了。具體**如下。

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define ll long long int

const

int mod=

1e9+7;

using

namespace std;

ll a[3]

[3],b[3]

[3],c[3]

[3],d[3]

[3];

void

mypow

(ll n)

for(i=

0;i<

3;i++

)for

(j=0

;j<

3;j++

) b[i]

[j]=d[i]

[j]%mod;

}memset

(d,0

,sizeof

(d))

;for

(i=0

;i<

3;i++

)for

(j=0

;j<

3;j++

)for

(k=0

;k<

3;k++

)for

(i=0

;i<

3;i++

)for

(j=0

;j<

3;j++

) a[i]

[j]=d[i]

[j]%mod;

n>>=1;

}}intmain()

習題日常第十練

這個題的輸入比較特別,需要用流或者快讀來處理。要求最少的換乘次數,我們可以把每乙個點都當作中轉點看看,利用弗洛伊德演算法的思想,求出從1到n的最少中轉次數。具體 如下。include include include include include include include include in...

習題日常第十八練

這個是思維題,特別簡單。第乙個數必定是要加入天數的,之後,每乙個數只要大於它的前乙個,天數就得加上他倆的差值,因為這時候前面那個小的需要的天數不足以讓大以及以後的比這個大的消耗為0,此時先計算需要額外的大的數需要天數,然後再以此類推判斷後面的數即可。如下。include include includ...

習題日常第十九練

題目本身沒有難點,算個公式題吧。但是中間有一步操作是值得學習的,對於這個題最後的答案要除以6,但是資料規模必須邊取餘邊計算。這時候,我們就可以將餘數擴大這個需要除以的倍數,最後除。這個方法非常的巧妙,以往我們在解決問題的時候都會用到費馬小定理來解決。具體 如下。cin n m n ans n n 2...