Rudro_Debnath

Untitled

Jan 2nd, 2022
39
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.61 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #include <ext/pb_ds/assoc_container.hpp>
  3. #include <ext/pb_ds/tree_policy.hpp>
  4. using namespace std;
  5. using namespace __gnu_pbds;
  6.  
  7. #define mxx 1e18
  8. #define mnn -1e18
  9. //#define int long long
  10. #define Y() cout<< "YES" <<endl
  11. #define N() cout << "NO"<<endl
  12. #define endl "\n"
  13. #define Ceil(x,y) ((x+y-1)/y)
  14. #define sz(s) (int)s.size()
  15. #define angle(x) double(x * acos(-1) / 180.0)
  16. #define max_3(a,b,c) max(a, max(b,c))
  17. #define min_3(a,b,c) min(a, min(b,c))
  18. #define gcd(a,b) __gcd(a,b)
  19. #define lcm(a,b) (a*b)/gcd(a,b)
  20. #define ll long long
  21. #define PI acos(-1)
  22. #define mem(a,v) memset(a,v,sizeof(a))
  23. #define SORT(v) sort(v.begin(),v.end())
  24. #define REV(v) reverse(v.begin(),v.end())
  25. #define B begin()
  26. #define E end()
  27. #define V vector
  28. #define F first
  29. #define S second
  30. #define pb push_back
  31. #define mp make_pair
  32. #define flash cout.flush()
  33. #define InTheNameOfGod ios::sync_with_stdio(0);cin.tie(0); cout.tie(0);
  34.  
  35. template <typename T>
  36. using ordered_set = tree<T, null_type, less_equal<T>, rb_tree_tag, tree_order_statistics_node_update>;
  37. //ordered_set<ll> s;
  38. //*s.find_by_order(x) //val at x index in sorted order.
  39. //s.order_of_key(x); //index of x or if not find x , it show index no in sort array.
  40.  
  41.  
  42. constexpr ll mod = 1e9 + 7;
  43. const double eps = 1e-7;
  44. int dx[] = {0,0,1,-1};
  45. int dy[] = {1,-1,0,0};
  46. /*-----*/
  47. #define bug1(a) cerr<<a<<endl;
  48. #define bug2(a,b) cerr<<a<<" "<<b<<endl;
  49. #define bug3(a,b,c) cerr<<a<<" "<<b<<" "<<c<<endl;
  50. /*----*/
  51. const ll N=3e6+5;
  52. vector<ll> adj[N];
  53. ll power(ll n,ll p){if(p==0) return 1;if(p==1)return n;if(p%2)return power(n,p-1)*n;else{ll x=power(n,p/2);return x*x;}}
  54. ll modpow(ll a,ll b,ll m){ll ans=1;while(b){if(b&1)ans=(ans*a)%m;b/=2;a=(a*a)%m;}return ans;}
  55. ll nsum(ll num){return (num*(num+1))/2;}
  56. //void edge (ll u,ll v) {adj[u].PSB(v) ;adj[v].PSB(u);}
  57. /*------------------START---------------------*/
  58. //memset(dp,0x3f,sizeof dp); //3d_dp
  59. void init_code(){
  60. //#ifndef ONLINE_JUDGE
  61. InTheNameOfGod
  62. freopen("input.txt","r",stdin);
  63. freopen("output.txt","w",stdout);
  64. //#endif
  65. }
  66.  
  67. ll c;
  68. const int MOD = 1e9 + 7;
  69.  
  70. long long prod(long long a, long long b, long long mod = MOD)
  71. {
  72. long long res = 0;
  73.  
  74. while(b)
  75. {
  76. if(b & 1)
  77. res = (res + a) % mod;
  78. a = (a + a) % mod;
  79.  
  80. b >>= 1;
  81. }
  82.  
  83. return res;
  84. }
  85.  
  86. long long bpow(long long a,
  87. long long b, long long mod = MOD)
  88. {
  89. long long res = 1;
  90.  
  91. while(b)
  92. {
  93. if(b & 1)
  94. res = prod(res, a, mod);
  95. a = prod(a, a, mod);
  96.  
  97. b >>= 1;
  98. }
  99.  
  100. return res;
  101. }
  102.  
  103.  
  104. /*-----*/
  105. void solve(){
  106. ll n,a,b;
  107. cin>>a>>b>>n;
  108. if(a==b){
  109. ll x= modpow(a,n,mod);
  110. ll y= modpow(b,n,mod);
  111. x= (x+y)%mod;
  112. cout<<x<<endl;
  113. return;
  114. }
  115. ll bal=abs(a-b);
  116.  
  117. ll x = (bpow(a, n, a - b) + bpow(b, n, a - b)) % (a - b);
  118.  
  119. cout<<gcd(x,bal)<<endl;
  120. //cout<<gcd(a,0LL)<<endl;
  121.  
  122.  
  123. //cout << fixed << setprecision(10);
  124. }
  125. /*-----*/
  126. //signed main(){
  127. int main(){
  128. //init_code();
  129. ll Test=1;
  130. cin>>Test;
  131. while(Test--){
  132. solve();
  133. }
  134. return 0;
  135. }
Advertisement
Add Comment
Please, Sign In to add comment