博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数学趣题_父亲分羊
阅读量:5147 次
发布时间:2019-06-13

本文共 1403 字,大约阅读时间需要 4 分钟。

同步至

一、题目描述

有个老父亲,有17头羊,临终前把三个儿子叫来。分给大儿子一半的羊,二儿子1/3的羊,小儿子1/9的羊。三个儿子不知道怎么分,只好请教邻居。聪明的邻居借给了他们一头羊,这样总共就有18头。大儿子领走一半9头羊,二儿子领走1/3共6头羊,小儿子领走1/9,也就是2头羊。邻居最后把借的羊牵回去了。我们的问题是,满足这样条件的数字还有哪些?即遗产有n头羊,大儿子分得1/x, 二儿子分得1/y, 小儿子分得1/z,邻居借给一头羊。请编程找出这些满足条件的(n, x, y, z)。

二、题目分析

先估算出n的取值范围,再根据判断条件编写程序。

假如先从 1/2 + 1/3 + 1/4 开始计算结果值,发现其大于1,而我们需要找的是x y z三值加起来的结果小于等于1,因此我们对其中一个值不断增大。

当我们发现 1/2 + 1/3 + 1/7 小于1时,此时可以列不等式 1/2 + 1/3 + 1/7 >= n/n+1,解得 n <= 41。所以程序如下:

#include
#include
int main(){ int n,x,y,z,counter; for(x = 1;x < 50;x++){ for(y = 1;y < 50;y++){ for(z = 1; z < 50;z++){ for(n = 1;n < 50;n++){ //判断条件 1,等式成立;2,x y z 三个值不相等;3,n要大于 x y z三个任一的值;4,x > y > z if(((n+1)*(y*z + x*z + x*y) == n*x*y*z) && (x != y && x != z && y!=z) && (((n+1) >= x && (n+1) >= y && (n+1) >= z))) { if ((x>y && y>z) && ((n+1)%x == 0 && (n+1)%y == 0 && (n+1)%z == 0)){ printf("n=%d,x=%d,y=%d,z=%d\n",n,x,y,z); counter++; } } } } } } printf("满足条件的(n, x, y, z)为%d\n",counter); return 0;}/*Outputn=19,x=5,y=4,z=2n=11,x=6,y=4,z=2n=41,x=7,y=3,z=2n=23,x=8,y=3,z=2n=17,x=9,y=3,z=2n=14,x=10,y=3,z=2满足条件的(n, x, y, z)为6*/

 

转载于:https://www.cnblogs.com/OctoptusLian/p/10142524.html

你可能感兴趣的文章
重载运算符
查看>>
《C语言深度剖析》笔记
查看>>
javascript操作DOM的方法与属性
查看>>
C++中的临时变量
查看>>
字符编码笔记:ASCII,Unicode和UTF-8
查看>>
程序下载破100亿:苹果平台化趋势被加固?
查看>>
STL源代码分析--萃取编程(traits)技术的实现
查看>>
用asp.net2.0做的网页,访问时出现 无法显示 XML 页 等错误
查看>>
[HAOI 2015]按位或
查看>>
vsftp 虚拟用户
查看>>
pahlcon:cookies设置
查看>>
使用Spire.Barcode程序库生成二维码
查看>>
对于@Component注解的理解
查看>>
Java学习之Math类理解
查看>>
logstash异常
查看>>
JavaMail实现邮箱之间发送邮件功能
查看>>
关键字和标识符
查看>>
java并发编程(十四)同步问题的内存可见性
查看>>
ASP.NET VS2013 Office 转 PDF
查看>>
C#图解教程 第八章 表达式和运算符
查看>>