数学杂题 鸡兔同笼
2017-08-25 19:36
225 查看
数学杂题 鸡兔同笼
题目
本题没有链接!(校内局域网OJ)题目描述
浙江工商大学校园里绿树成荫,环境非常舒适,因此也引来一批动物朋友来此居住。童心未泯的redraiment就经常带些碎面包什么的去广场喂鸽子和兔子,并和它们玩耍。一点也不像大学生,还是一副老不正经的样子,呵呵。
随着鸽子和兔子数目的增多,redraiment带的那点食物已经不够它们瓜分了。为了能让自己的好朋友吃的饱饱的,redraiment决定统计一下有多少只鸽子和有多少只兔子,以便带来足够的食物。一、二、三、四、五…他开始数了。
现在,他已经知道有这些鸽子和兔子一共有n个头和m只脚。请你帮他写个程序计算一下一共有多少只鸽子和兔子。
输入
输入包括多组数据。 每行包括2个数据:n、m(代表上面题目中提到的意思1≤n, m≤230)。 n、m都是整数。 输入以0 0作为结束。输出
每组数据的输出都只有一行,分别是鸽子的数量和兔子数量。 如果输入的测试数据不能求得结果,那肯定是redraiment这个马大哈数错了,就输出”Error”提示他。考点
数学思路
非常基础的鸡兔同笼问题——即假设全都是鸡,再把与实际的差求出来,除上两个种类相差的脚数即可注意出错的可能情况:
- 鸡/兔数是小数
- 全都是鸡都比期望大
- 全都是兔都比期望大
- 太多兔子了
代码
#include<iostream> #include<cstdio> using namespace std; int main() { int tothead; int totfoot; int tmpfoot; int chicken,rabbit; ios::sync_with_stdio(false); while(cin>>tothead>>totfoot and not(tothead==0 and totfoot==0)) { tmpfoot=tothead*2;//全部是鸡 tmpfoot=totfoot-tmpfoot;//鸡换成兔子的腿数 if(tmpfoot<0 or tmpfoot%2!=0) { cout<<"Error"<<endl; } else { rabbit=tmpfoot/2;//几个兔子 chicken=tothead-rabbit;//几个鸡 if(rabbit*4+chicken*2!=totfoot)//太多脚了 { cout<<"Error"<<endl; } else if(rabbit>tothead or rabbit<0) { cout<<"Error"<<endl; } else if(chicken>tothead or chicken<0) { cout<<"Error"<<endl; } else { cout<<chicken<<" "<<rabbit<<endl; } } } }
相关文章推荐
- 小学数学题真难之二:鸡兔同笼
- 经典数学问题“鸡兔同笼”竟还有这种解法?
- 数学回味系列之7 - 鸡兔同笼问题
- 趣味数学-鸡兔同笼算法
- [从头学数学] 第73节 数学广角──鸡兔同笼
- 51nod 1661 黑板上的游戏(yjq魔改ver【x【博弈,稍微数学推一下
- UVA - 11181 数学
- 数学表达式的计算——如何捕捉异常
- 2013浙江高考数学22题
- [转]数学之美
- 算法分析的数学基础
- 机器学习(2.4)数据知识积累——高等数学
- Home_W的超级数学题(第k个和m互素的数
- 2008年普通高等学校招生考试全国卷I数学
- 「机器学习和大数据计算都是学数学应该干的,学计算机的相比毫无优势」
- 数学之美番外篇:平凡而又神奇的贝叶斯方法
- [从头学数学] 第42节 倍的认识
- Codeforces Round #370 (Div. 2) E. Memory and Casinos (数学&&概率&&线段树)
- hdu6129 二进制+数学
- php中BC math 高精度数学函数