torus711 のアレ

主に競技プログラミングの問題について書きます

AtCoder Regular Contest #012, B : アキレスと亀

解法

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;
}