您的位置:首页 > 其它

3496. 鸡兔同笼

2013-03-23 22:36 176 查看
3496. 鸡兔同笼

Constraints

Time Limit: 1 secs, Memory Limit: 256 MB

Description

一个笼中有x只鸡和y只兔(x和y可以为0). 它们总共有m个头和n只脚(0 <= m, n <= 10000). 从键盘读入m和n的值,从屏幕输出x和y的值. 如果无解,则输出No answer.

Input

有多组输入数据. 输入数据的每行是两个整数m和n. m和n都为0表示输入结束(不需要处理这一行).

Output

对于每组输入数据,输出x和y的值,x和y之间用空格隔开. 如果无解,则输出No answer.

Sample Input

5 16

3 15

0 0

Sample Output

2 3

No answer

Problem Source

林瀚

鸡兔同笼问题,原来同搬砖问题,所以代码的很多部分可读性很差,是用搬砖问题的代码改过来的。

// Problem#: 3496

// Submission#: 1984395

// The source code is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License

// URI: http://creativecommons.org/licenses/by-nc-sa/3.0/
// All Copyright reserved by Informatic Lab of Sun Yat-sen University

#include<iostream>

#include<stdio.h>

using namespace std;

class RemoveBricks

{

int iNumberOfPeople;

int iNumberOfBricks;

public:

//set函数输入人数iNumberOfPeople,砖头数iNumberOfBricks

void set(int iNumberOfPeople,int iNumberOfBricks)

{

RemoveBricks::iNumberOfPeople=iNumberOfPeople;

RemoveBricks::iNumberOfBricks=iNumberOfBricks;

}

//求解并输出解的个数

void Calculate()

{

int y,z;

int counter=0;

for(y=0;y<=(RemoveBricks::iNumberOfPeople);y++){

for(z=0;z<=(RemoveBricks::iNumberOfPeople);z++){

if((y+z)==RemoveBricks::iNumberOfPeople && (2*y+4*z)==RemoveBricks::iNumberOfBricks){

cout<<y<<" "<<z<<endl;

counter++;

}

}

}

if(counter==0){

cout<<"No answer"<<endl;

}

}

};

int main()

{

int a,b;

cin>>a>>b;

while(a!=0 && b!=0)

{

RemoveBricks rb;

rb.set(a,b);

rb.Calculate();

cin>>a>>b;

}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: