解法
L の値を更新しつつ N 回の移動をシミュレートすることで、最終的な L の値を求められます。
コード
double solve( int n, int va, int vb, double l ) { if ( !n ) { return l; } double t = (double)l / va; double next_l = l + t * vb - t * va; return solve( n - 1, va, vb, next_l ); } int main() { cin.tie( 0 ); ios::sync_with_stdio( false ); int n, va, vb, l; cin >> n >> va >> vb >> l; cout.precision( 7 ); cout << fixed; cout << solve( n, va, vb, l ) << endl; return 0; }