fork download
  1. #pragma GCC optimize("Ofast")
  2. #pragma GCC optimize("unroll-loops")
  3. #include <bits/stdc++.h>
  4. using namespace std;
  5. using ll = long long;
  6. using lld = double;
  7. #define srt(a) sort(a.begin(),a.end());
  8. #define rsrt(a) sort(a.rbegin(),a.rend());
  9. #define pb push_back
  10. using pll=pair<ll,ll>;
  11. #define fi(a,b,c) for(ll a=b;a<c;a++)
  12. #define f(a,c) for(ll a=0;a<c;a++)
  13. #define rf(a,c) for(ll a=c;a>=0;a--)
  14. #define cye cout<<"Yes\n"
  15. #define cno cout<<"No\n"
  16. #define vll vector<ll>
  17. ll mod=1e9+7,N=1e6;
  18. ll solve(ll a,ll b, ll x){
  19. ll ans=1e9;
  20. if(a==b)return 0;
  21. if(a>b)
  22. ans=min(ans,1+solve(a/x,b,x));
  23. else
  24. ans=min(ans,1+solve(a,b/x,x));
  25. if(a<b)
  26. ans=min(ans,1+solve(a+1,b,x));
  27. else
  28. ans=min(ans,1+solve(a,b+1,x));
  29. return ans;
  30. }
  31. int main(){
  32. ios_base::sync_with_stdio(false);
  33. cin.tie(NULL);
  34. cout.tie(NULL);
  35. ll t;
  36. cin>>t;
  37. while(t--){
  38. ll a,b,x,c=0;
  39. cin>>a>>b>>x;
  40. while(abs(a-b)<5){
  41. if(a==b)break;
  42. if(a>b)a/=x;
  43. else b/=x;
  44. c++;
  45. }
  46. cout<<c+solve(a,b,x)<<'\n';
  47. }
  48. return 0;
  49. }
Success #stdin #stdout 0.01s 5328KB
stdin
7
1 2 3
2 3 2
7 3 10
17 3 3
10 10 2
4 7 2
1 6 2
stdout
2
2
2
3
0
4
2