现在的位置: 首页 > 综合 > 正文

3496. 鸡兔同笼

2013年10月07日 ⁄ 综合 ⁄ 共 1653字 ⁄ 字号 评论关闭

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

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

Output

对于每组输入数据,输出xy的值,xy之间用空格隔开如果无解,则输出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;

}                 

抱歉!评论已关闭.