uknowme99

Untitled

Jun 17th, 2019
16
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.91 KB | None | 0 0
  1. #include <iostream>
  2. #include <bits/stdc++.h>
  3. #define ll  long long
  4. #define sam unsigned long long int
  5. #define fr(i,n) for(ll  i = 0; i < n; i++)
  6. using namespace std;
  7.  
  8. ll  mod = 1000000007;
  9.  
  10. ll  mulmod(ll  a, ll  b){
  11.     return ( ( a % mod ) * ( b % mod ) ) % mod;
  12. }
  13.  
  14. ll  fast_pow(long long base, long long n,long long M)
  15. {
  16.     if(n==0)
  17.        return 1;
  18.     if(n==1)
  19.     return base;
  20.     long long halfn=fast_pow(base,n/2,M);
  21.     if(n%2==0)
  22.         return ( halfn * halfn ) % M;
  23.     else
  24.         return ( ( ( halfn * halfn ) % M ) * base ) % M;
  25. }
  26. ll  findMMI_fermat(ll  n,ll  M)
  27. {
  28.     return fast_pow(n,M-2,M);
  29. }
  30.  
  31. int main()
  32. {
  33.     ios_base::sync_with_stdio(false);
  34.     cin.tie(NULL);
  35.     cout.tie(NULL);
  36.     ll  t;
  37.     cin>>t;
  38.     while(t--){
  39.         ll  n,k;
  40.         cin>>n>>k;
  41.         ll  a = k , b = n + k -1;
  42.         ll  u = b - a;
  43.         ll  v = a - 1;
  44.         ll  d ;
  45.         if(v%u != 0){
  46.             d = v/u ;
  47.             ll  w = d+1;
  48.             ll  i,s = 0;
  49.             ll  su = 1;
  50.             su = (su*w) %mod;
  51.             su = (su*d) %mod;
  52.             su = (su*u) %mod;
  53.             // z=(x/y)%M;
  54.             // y2=findMMI(y,M);
  55.             // z=(x*y2)%M;
  56.             ll  y2 = findMMI_fermat(2,mod);
  57.             ll  y3 = (su * y2) % mod;
  58.             s = mulmod(w,v) - y3;
  59.             cout<<s%1000000007<<endl;
  60.         }
  61.         else{
  62.             d = v/u;
  63.             ll  w = d-1;
  64.             ll  i,s = 0;
  65.             ll  su = 1;
  66.             su = (su*w) %mod;
  67.             su = (su*d) %mod;
  68.             su = (su*u) %mod;
  69.             // z=(x/y)%M;
  70.             // y2=findMMI(y,M);
  71.             // z=(x*y2)%M;
  72.             ll  y2 = findMMI_fermat(2,mod);
  73.             ll  y3 = (su * y2) % mod;
  74.             s = mulmod(d,v) - y3;
  75.             cout<<s%1000000007<<endl;
  76.         }
  77.         // for(i = 0 ; i<d ; i++){
  78.         //     s = s - i*(b) + v;
  79.         // }
  80.     }
  81. }
Add Comment
Please, Sign In to add comment