#include <bits/stdc++.h>
#include <complex>

#define X real()
#define Y imag()

using namespace std;
typedef long long ll;
typedef complex<double> point;

#define INF numeric_limits<int>::max()

//Graphs
class AdjGraph{
		ll V;
		list<ll> *l;
		vector<ll> checker;
		vector<bool> visited;
	public:
		AdjGraph(ll Vert){
			this->V = Vert;
			l = new list<ll>[Vert];
			vector<bool> vs(Vert,false);
			this->visited = vs;
		}
		void AddEdge(ll x,ll y){
			l[x].push_back(y);
			l[y].push_back(x);
		}
		//Template for DFS
		void DFS(ll at){
			this->visited[at] = true;
			for(int x:l[at]){
				if(this->visited[x] != true){
					DFS(x);
				}
			}
		}
		bool CheckConnect(ll x,ll y){
			DFS_c(x);
			reset_visited();
			for(ll t: checker){
				if(t == y){
					checker.erase(checker.begin(),checker.end());
					return true;
				}
			}
			checker.erase(checker.begin(),checker.end());
			return false;
		}
		void reset_visited(){
			vector<bool> new_visited(this->V,false);
			this->visited = new_visited;
		}
		
	private:
		
		void DFS_c(ll at){
			this->visited[at] = true;
			checker.push_back(at);
			for(ll x:l[at]){
				if(this->visited[x] != true){
					DFS_c(x);
				}
			}
		}
		
};

class AdjGraphWeight{
	
		ll V;
		vector<pair<ll,ll> > *edge;
		vector<bool> *visited;
	public:
		
		AdjGraphWeight(ll Vert){
			this->V = Vert;
			edge = new vector<pair<ll,ll> >[Vert];
			visited = new vector<bool>(Vert,false);
		}
	
};

//Number Theory
bool isPrime(ll x){
	for(int i = 2;i < sqrt(x)+1;i++){
		if(x % i == 0){
			return false;
		}
	}
	return true;
}

vector<ll> prime_divs(ll x){
	vector<ll> divs;
	for(int i = 0;i < sqrt(x)+1;i++){
		if((isPrime(i) == true) && (x % i == 0)){
			divs.push_back(i);
			if(isPrime(x/i) == true){
				divs.push_back(x/i);
			}
		}
	}
	return divs;
}

vector<ll> exponents(ll x){
	vector<ll> divs = prime_divs(x);
	vector<ll> res;
	for(int i = 0; i< divs.size();i++){
		ll temp = 0;
		double expression = x/pow(divs[i],temp);
		while(ceil(x/pow(divs[i],temp)) == x/pow(divs[i],temp)){
			temp++;
		}
		res.push_back(temp);
	}
	return res;
}

vector<ll> get_all_divs(ll x){
	vector<ll> divs;
	divs.push_back(1);
	divs.push_back(x);
	if(isPrime(x) != true){
		for(int i = 2;i < sqrt(x)+1;i++){
			if(x % i == 0){
				divs.push_back(i);
				if(i*i != x){
					divs.push_back(x/i);
				}
			}
		}
	}
	return divs;
}

ll gcd(ll a,ll b){
	if(b == 0) return a;
	return gcd(b,a%b);
}

ll lcm(ll a,ll b){
	return (a*b)/gcd(a,b);
}

int main(){
	ios::sync_with_stdio(false);
	double x,y,z;
	cin >>  x >> y >> z;
	double temp = y/x;
	if(x == z){
		cout << y-1 << endl;
	}else{	
		double res = floor(temp*z-1/x);
		if(res == x){
			cout << res-1 << endl;
		}else{
			cout << res << endl; 
		}
	}
	return 0;
}

#include <iostream>

int main() {
    double x, y, z;
    scanf("%lf %lf %lf", &x, &y, &z);

    // y/x > z/?

    int answer = 0;
    for (int v = 0; v < 1e9; ++v) {
        if (x/y >= z/v) {
            break;
        } else {
            answer = v;
        }
    }

    std::cout << answer;

    return 0;
}