数学趣题_父亲分羊

Posted octoptuslian

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数学趣题_父亲分羊相关的知识,希望对你有一定的参考价值。

同步至 Github-WeeklyARTS-Algorithm

一、题目描述

有个老父亲,有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<stdio.h>
#include<math.h>
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 >= x && n >= y && n >= z))) {
                        if (x>y && y>z){
                            printf("n=%d,x=%d,y=%d,z=%d
",n,x,y,z);
                            counter++;
                        }
                    }
                }
            }
        }
    }

    printf("满足条件的(n, x, y, z)为%d
",counter);

    return 0;
}

/*
Output
n=19,x=5,y=4,z=2
n=11,x=6,y=4,z=2
n=41,x=7,y=3,z=2
n=23,x=8,y=3,z=2
n=17,x=9,y=3,z=2
n=14,x=10,y=3,z=2
满足条件的(n, x, y, z)为6
*/

 

以上是关于数学趣题_父亲分羊的主要内容,如果未能解决你的问题,请参考以下文章

初等数学问题解答-1:九九乘法表的趣题

趣题分享如何数学推导三国杀王荣吉占摸牌的期望值?(Web Premiere)

趣题分享如何数学推导三国杀王荣吉占摸牌的期望值?(Web Premiere)

趣题分享如何数学推导三国杀王荣吉占摸牌的期望值?(Web Premiere)

趣题分享如何数学推导三国杀王荣吉占摸牌的期望值?(Web Premiere)

求解一个数学问题,及其背后的原理。