题目地址:http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=64
?
描述
已知鸡和兔的总数量为n,总腿数为m。输入n和m,依次输出鸡和兔的数目,如果无解,则输出“No answer”(不要引号)。
输入
第一行输入一个数据a,代表接下来共有几组数据,在接下来的(a<10)
a行里,每行都有一个n和m.(0<m,n<100)
输出
输出鸡兔的个数,或者No answer
样例输入
2
14 32
10 16
样例输出
12 2
No answer
?
?
代码:
#include <stdio.h>
//输出结果
//n-个数和,m-腿数和
static void printResult(int n,int m);
int main()
{
???? int readLen = 0;
???? scanf("%d",&readLen);
???? getchar();
????
???? while(readLen > 0)
???? {
????????? int n = 0;
????????? int m = 0;
?????????
????????? scanf("%d %d",&n,&m);
????????? getchar();
?????????
????????? printResult(n,m);
?????????
????????? --readLen;
???? }
????
???? return 0;
}
//输出结果
//n-个数和,m-腿数和
static void printResult(int n,int m)
{
? ? ?if(m<n)
? ? ?{
? ? ? ? ? printf("No answer");
????????? return;
? ? ?}
?
???? int tmpValue = m-2*n;
???? if(tmpValue < 0 || tmpValue % 2 != 0)
???? {
????????? printf("No answer");
????????? return;
???? }
????
???? int rabbitCount = tmpValue / 2;
???? int chickenCount = n - rabbitCount;
?
? ? if(chickenCount < 0)
? ? {
? ? ? ? ? printf("No answer");
????????? return;
? ? }
????
???? printf("%d %d\n",chickenCount,rabbitCount);
}
?
?
通过方程组,解得个数的判断
兔子:(m-2n)/2
鸡:n-兔子个数
?
另外自己写的代码对条件的判断过于繁琐,推荐优秀程序如下:
?
#include<iostream>
using namespace std;
int main()
{
int n,a,b,p,q;
cin>>n;
while(n--)
{
cin>>a>>b;
q=(b-2*a)/2;
p=a-q;
if(p<0 ||q<0 || b%2) cout<<"No answer"<<endl;
else cout<<p<<" "<<q<<endl;
}
}
?