#include #include #define MAX_T 1000000001 int memo[MAX_T]; int A,B,T; #define min(a,b) (((a)>(b))?(b):(a)) int solve( int left){ if( left <= 0 ){ return -left; } if( memo[left] != 0 ){ return memo[left]; } int min_A = solve( left - A ); int min_B = solve( left - B ); memo[left] = min( min_A, min_B ); return memo[left]; } int main( void ){ int i; scanf("%d %d %d",&A,&B,&T); int min_left = MAX_T; for(i=0;i*BA;i++){ int pay = B * i + ( A * ( (T-B*i-1)/A + 1 ) ); int left = pay - T; min_left = min( min_left, left ); if( min_left == 0 ){ break; } //printf("pay:%d left:%d min:%d\n",pay,left,min_left); } printf("%d\n",min_left + T ); return 0; }