18-语言入门-18-鸡兔同笼

来源:互联网 发布:反馈网络的作用 编辑:程序博客网 时间:2024/05/22 00:56

题目地址: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;

}

}

0 0
原创粉丝点击