#include <bits/stdc++.h>
using namespace std;
int main(){
    int X, Y, Z;
    cin >> X >> Y >> Z;
    if(Z * Y % X == 0) cout << Z * Y / X - 1 << endl;
    else cout << Z * Y / X << endl;
}
#include <bits/stdc++.h>
using namespace std;
using Graph = vector<vector<int>>;
#define ALL(obj) obj.begin(),obj.end()
#define SORT(obj) sort(obj.begin(),obj.end())
#define pb(obj) push_back(obj)
#define rep(i,n) for(int i=0; i<n; i++)
typedef long long ll;
ll const MOD=1e9+7;
const ll INF = 9000000000000000000;
vector<bool> seen;//グラフ用の配列
long long pow(long long x, long long n) {
    long long ret = 1;
    while (n > 0) {
        if (n & 1) ret = ret * x % MOD;  // n の最下位bitが 1 ならば x^(2^i) をかける
        x = x * x % MOD;
        n >>= 1;  // n を1bit 左にずらす
    }
    return ret;
}
int ctoi(const char c){
  switch(c){
    case '0': return 0;
    case '1': return 1;
    case '2': return 2;
    case '3': return 3;
    case '4': return 4;
    case '5': return 5;
    case '6': return 6;
    case '7': return 7;
    case '8': return 8;
    case '9': return 9;
    default : return -1;
  }
}
int kakuketa(int n){
    int ans = 0;
    while(n>0){
        ans += n%10;
        n /= 10;
    }
    return ans;
}
void dfs2(int y,int x,vector<vector<bool>> &flags,Graph &G){//二次元dfs
    if(G[y][x] == 0) return;
    if(flags[y][x] == true) return;
    else{
        flags[y][x] = true;
    }
    dfs2(y+1,x,flags,G);
    dfs2(y+1,x+1,flags,G);
    dfs2(y+1,x-1,flags,G);
    dfs2(y,x+1,flags,G);
    dfs2(y,x-1,flags,G);
    dfs2(y-1,x+1,flags,G);
    dfs2(y-1,x,flags,G);
    dfs2(y-1,x-1,flags,G);
}

int main(){
    int x,y,z;
    cin>>x>>y>>z;
    double a = (double)y*z/x;
  //cout<<a<<endl;
    if(ceil(a) == floor(a)){
        cout<<(int)a-1<<endl;
        return 0;
    }
    else{
        cout<<floor(a)<<endl;
        return 0;
    }
}