Advertisement
thangt02ptit

M contest 3 thSon

Feb 24th, 2019
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.93 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. const int N=2;
  5. const long long base=1000000007;
  6.  
  7. struct Matrix{
  8.     long long m[N][N];
  9.     Matrix(){
  10.         m[0][0]=0;
  11.         m[0][1]=1;
  12.         m[1][0]=1;
  13.         m[1][1]=1;
  14. //      for (int i=0; i<n; i++){
  15. //          for (int j=0; j<n; j++) m[i][j]=0;
  16. //      }
  17.     }
  18. };
  19.  
  20. Matrix operator * (Matrix a, Matrix b)
  21. {
  22.     Matrix res;
  23.     for (int i=0; i<=1; i++)
  24.         for (int j=0; j<=1; j++)
  25.         {
  26.             res.m[i][j] = 0;
  27.             for (int k=0; k<=1; k++)
  28.                 res.m[i][j] = (res.m[i][j]+a.m[i][k]*b.m[k][j])%base;
  29.         }
  30.     return res;
  31. }
  32.  
  33. Matrix Solve (Matrix a, long long n)
  34. {
  35.     if (n==1)
  36.         return a;
  37.     if (n%2!=0)
  38.         return Solve(a,n-1)*a;
  39.     Matrix tmp = Solve(a,n/2);
  40.     return tmp*tmp;
  41. }
  42.  
  43. int main() {
  44.     int t;
  45.     cin>>t;
  46.     while (t--){
  47.         long long n;
  48.         cin>>n;
  49.         Matrix a;
  50.         Matrix result = Solve(a, n);
  51.         cout<<result.m[0][1]<<endl;
  52.     }
  53.     return 0;
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement