#include <iostream> #include <algorithm> #include <map> #include <set> #include <queue> #include <stack> #include <numeric> #include <bitset> #include <cmath> static const int MOD = 1000000007; using ll = long long; using u32 = unsigned; using u64 = unsigned long long; using namespace std; template<class T> constexpr T INF = ::numeric_limits<T>::max() / 32 * 15 + 208; int main() { int a, b, k; cin >> a >> b >> k; ll g = 1LL*a/__gcd(a, b)*b; ll ng = 0, ok = INF<ll>; while(ok-ng > 1){ ll mid = (ok+ng)/2; if(mid/a+mid/b-mid/g >= k) ok = mid; else ng = mid; } cout << ok << "\n"; return 0; }