using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; class TEST{ static void Main(){ Sol mySol =new Sol(); mySol.Solve(); } } class Sol{ public void Solve(){ if(B - A == 0){ Console.WriteLine(C); } else { Console.WriteLine( ( C * (C-B) / (B-A) + (B*B - A*C) / (B-A) )); } } Q A,B,C; public Sol(){ var d = rla(); A = d[0]; B = d[1]; C = d[2]; } static String rs(){return Console.ReadLine();} static int ri(){return int.Parse(Console.ReadLine());} static long rl(){return long.Parse(Console.ReadLine());} static double rd(){return double.Parse(Console.ReadLine());} static String[] rsa(char sep=' '){return Console.ReadLine().Split(sep);} static int[] ria(char sep=' '){return Array.ConvertAll(Console.ReadLine().Split(sep),e=>int.Parse(e));} static long[] rla(char sep=' '){return Array.ConvertAll(Console.ReadLine().Split(sep),e=>long.Parse(e));} static double[] rda(char sep=' '){return Array.ConvertAll(Console.ReadLine().Split(sep),e=>double.Parse(e));} } struct Q:IComparable { long num; long den; public static long gcd(long a, long b){ return a == 0 ? b : gcd(b % a, a); } public static Q Red(Q x){ long n = x.Num; long d = x.Den; long g = gcd(Math.Abs(n), Math.Abs(d)); n /= g; d /= g; if(d < 0){n *= -1;d *= -1;} return new Q(n, d); } public int CompareTo(Q t){ var d = num * t.den - den * t.num; return d > 0 ? 1 : d < 0 ? -1 : 0; } public long Num{ get{return num;} set{this.num = value;} } public long Den{ get{return den;} set{this.den = value;} } public Q(long n_, long d_){ if(d_ < 0){ n_ *= -1;d_ *= -1;} long g = gcd(Math.Abs(n_), Math.Abs(d_)); n_ /= g; d_ /= g; num = n_; den = d_; } public static implicit operator Q(long n){ return new Q(n, 1); } public static Q operator+(Q a, Q b){ return (new Q(a.Num * b.Den + a.Den * b.Num, a.Den * b.Den)); } public static Q operator-(Q a, Q b){ return (new Q(a.Num * b.Den - a.Den * b.Num, a.Den * b.Den)); } public static Q operator-(Q a){ return (new Q(-a.Num, a.Den)); } public static Q operator*(Q a, Q b){ return (new Q(a.Num * b.Num, a.Den * b.Den)); } public static Q operator/(Q a, Q b){ return (new Q(a.Num * b.Den, a.Den * b.Num)); } public static bool operator>(Q a, Q b){ return a.CompareTo(b) > 0; } public static bool operator<(Q a, Q b){ return a.CompareTo(b) < 0; } public static bool operator>= (Q a, Q b){ return a.CompareTo(b) >= 0; } public static bool operator<= (Q a, Q b){ return a.CompareTo(b) <= 0; } public static bool operator == (Q a, Q b){ return a.Equals(b); } public static bool operator != (Q a, Q b){ return !(a == b); } public override bool Equals(System.Object obj){ if(obj == null) return false; Q p = (Q) obj; if((System.Object) p == null) return false; return den * p.num == num * p.den; } public override int GetHashCode(){ return (den ^ num).GetHashCode(); } public static Q Min(Q a, Q b){ return a < b ? a : b; } public override String ToString(){ return this.Num.ToString()+"/"+this.Den.ToString(); } }