Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- typedef long long int ll;
- //#define isvowel(a) (a == 'a' || a == 'e' || a == 'i' || a == 'o' || a == 'u')
- #define pb push_back
- #define mp make_pair
- #define fi first
- #define se second
- #define gcd __gcd
- #define getl(s) getline(cin, s);
- #define setpre(x) fixed << setprecision(x)
- #define mset(a) memset(a, 0, sizeof(a))
- #define endl '\n'
- const int N=200050,M=1000000007;
- const ll INF=1e18+7;
- vector<vector<ll> > matrix_mul(vector<vector<ll> >A,vector<vector<ll> >B){
- int n=A.size(),m=A[0].size(),mm=B[0].size();
- vector<vector<ll> >C(n,vector<ll>(mm,0));
- for(int i=0;i<n;++i){
- for(int j=0;j<mm;++j){
- for(int p=0;p<m;++p){
- C[i][j]=(C[i][j]+(A[i][p]*B[p][j])%M)%M;
- }
- }
- }
- return C;
- }
- vector<vector<ll> >divide_and_conquer(vector<vector<ll> >A,ll k){
- if(k==1) return A;
- vector<vector<ll> >B;
- B=divide_and_conquer(A,k/2);
- if(k%2==0) return matrix_mul(B,B);
- return matrix_mul(matrix_mul(B,B),A);
- }
- int main(){
- ios_base::sync_with_stdio(NULL); cin.tie(nullptr); cout.tie(nullptr);
- // freopen(".inp","r",stdin);
- // freopen(".out","w",stdout);
- ll n,t;
- return 0;
- }
- /*
- ==================================+
- INPUT: |
- ------------------------------ |
- ------------------------------ |
- ==================================+
- OUTPUT: |
- ------------------------------ |
- ------------------------------ |
- ==================================+
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement