南阳oj 鸡兔同笼

#include<iostream>
using namespace std;
int main ()
{
int a;
cin>>a;
while(a--)
{
int n,m;
cin>>n>>m;
int x=(4*n-m)/2;
int y=(m-2*n)/2;
if(x>=0 && y>=0 && (x+y)==n && (2*x+4*y)==m)
cout<<x<<" "<<y<<endl;
else
cout<<"No answer"<<endl;
}
return 0;
}

这个题在网上看到两种做法

我做的时候使用的解方程,解得x,y的表达式,但是需要注意,要给出判定条件,可以带入验证解的结果是否正确。因为int型在运算的时候只保留了整数部分

另一种是遍历,给出了鸡喝兔子的总数,假设鸡的数目为变量,从1到n遍历,如果符合条件就说明正确,若遍历完没有找到给出的数据,则无解。

猜你喜欢

转载自www.cnblogs.com/huanya/p/9362799.html