#include #include class Yuki { public: long long int old; long long int sum; long long int start; long long int end; long long int middle; }; void BinarySearch(Yuki *yuki, long long int a_num, long long int b_get, long long int c) { while(1){ long long int n_get = yuki->middle / a_num; yuki->sum = b_get * n_get + (yuki->middle - n_get); /* printf("%lld %lld %lld\n", yuki->sum, n_get, yuki->middle-n_get); exit(0); */ if(yuki->sum < c && yuki->sum > 0){ if(yuki->middle == yuki->start){ yuki->old = yuki->end; break; } yuki->start = yuki->middle; yuki->middle = (yuki->end + yuki->middle) / 2; //printf("%lld 1\n", yuki->middle); } else if(yuki->sum > c || yuki->sum < 0){ if(yuki->middle == yuki->end){ yuki->old = yuki->start; break; } yuki->end = yuki->middle; yuki->middle = (yuki->start + yuki->end) / 2; //printf("%lld 2\n", yuki->middle); } else { yuki->old = yuki->middle; //printf("%lld\n", yuki.old); break; } } } int main(void) { long long int a_num, b_get, c; scanf("%lld %lld %lld", &a_num, &b_get, &c); Yuki yuki; yuki.sum=0; yuki.old = 1; yuki.start = 1; yuki.end = c; if(c == 1){ yuki.middle = 1; } else { yuki.middle = c / 2; } BinarySearch(&yuki, a_num, b_get, c); printf("%lld\n", yuki.old); return 0; }