TopCoder SRM 473 Div 2 Easy OnTheFarmDivTwo

問題概要

牛と鶏の「頭の数の合計」と「足の数の合計」が与えられるとき、牛と鶏のそれぞれの数を求めよ。
適切な解が存在しない場合空のvector<int>を返せ。

解法

鶴亀算なので連立方程式を解いてそれをコードにすればよい。解の検証をする必要がある。

ソースコード

class OnTheFarmDivTwo {
	public:
	vector <int> animals(int heads, int legs) 
	{
		vi ans;
		ans.pb((4*heads-legs)/2);
		ans.pb((legs-2*heads)/2);
		
		if(ans[0]<0||ans[1]<0||ans[0]+ans[1]!=heads||2*ans[0]+4*ans[1]!=legs)return vi(0);
		return ans;
	}
};