fork download
  1. #include "bits/stdc++.h"
  2. using namespace std;
  3. #define fastio ios_base::sync_with_stdio(0); cin.tie(NULL); cout.tie(NULL);
  4. #define vint vector<int>
  5. #define int long long
  6. #define all(v) (v).begin(), (v).end()
  7. #define rall(v) (v).rbegin(), (v).rend()
  8. #define cinv(T) for(auto& i : T) cin>>i;
  9. #define nl '\n'
  10. #define cy cout<<"YES\n"
  11. #define cn cout<<"NO\n"
  12. int dx[8] = {0, 0, 1, 1, 1, -1, -1, -1};
  13. int dy[8] = {1, -1, 0, 1, -1, 0, 1, -1};
  14.  
  15.  
  16. void solve() {
  17. int x, y, n; cin>>x>>y>>n;
  18.  
  19. int a, b, bn = 1e9, bd = 1;
  20.  
  21. for (int i = 1; i <= n; i++) { //try every possible denominator b
  22. int t = (x * i)/y; //we want a/b =~ x/y; thus, a =~ x*b/y (floor), so a + 1 also valid
  23. for (int j = t; j <= t + 1; j++) {
  24. // x/y - a/b = (x * b - a * y) / (y * b) = num / den
  25. int num = abs(x * i - j * y), den = y * i;
  26.  
  27. //num/den -> value to be minimized
  28. if (num * 1.0 / den < bn * 1.0 / bd)
  29. b = i, a = j, bn = num, bd = den;
  30.  
  31. if (num * 1.0 / den == bn * 1.0/ bd)
  32. if (i < b or (i == b and j < a))
  33. b = i, a = j, bn = num, bd = den;
  34.  
  35. }
  36. }
  37.  
  38. cout<<a<<"/"<<b<<nl;
  39. }
  40.  
  41. int32_t main() {
  42. fastio
  43. int t = 1; //cin>>t;
  44. while (t--) solve();
  45. return 0;
  46. }
Success #stdin #stdout 0s 5320KB
stdin
Standard input is empty
stdout
1/1