码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2016-01-19 12:27:17      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:

?
描述
已知鸡和兔的总数量为n,总腿数为m。输入nm,依次输出鸡和兔的数目,如果无解,则输出“No answer”(不要引号)

输入
第一行输入一个数据a,代表接下来共有几组数据,在接下来的(a<10)
a
行里,每行都有一个nm.(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;
}
}
?

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

标签:

原文地址:http://www.cnblogs.com/sharpfeng/p/5141733.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!