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

 
描述
已知鸡和兔的总数量为 n, 总腿数为 m 。输入 nm, 依次输出鸡和兔的数目,如果无解,则输出 “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;
}
}
 

转载于:https://www.cnblogs.com/sharpfeng/p/5141733.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值