美文网首页
1百块钱买1百颗糖果的问题

1百块钱买1百颗糖果的问题

作者: 阿春_abcdlcq | 来源:发表于2018-03-15 13:23 被阅读0次

高级糖果5块钱1颗,中级糖果3块钱1颗,低级糖果1块钱3颗,问100块钱买100颗糖果,应该怎么买?要求每种糖果都必须有。

这是个数学问题,从数学的角度去解决算法问题,有助于我们降低时间复杂度。设高级糖果x颗、中级y颗、低级z颗,可以得出2个方程:

x+y+z=100

5x+3y+z/3=100,且x、y、z是正整数,z是3的倍数

我们可以初步定一下x、y、z的范围,每种糖果都必须有,很显然x、y都≥1,z≥3,第1个式子对确定x、y范围没什么作用,都特别大,z≤96。从第2个式子可以看出,x≤19,y≤31,z太大忽略。因此就有

1≤x≤19,1≤y≤31,3≤z≤96。是不是算法采用x循环最好,还不一定呢。

我们再回过来处理这2个方程,将z消掉后可以得到一个二元一次方程,

7x+4y=100

这是一条在x、y平面上的直线,我们的解就在这条直线上,继续确定范围x≤13,y≤23。如果采用x循环,就有

y = (100-7x)/4=25-7x/4

z = 100-y-x

有个问题,解y的时候出现了除,这可不是什么好事,可能出现浮点数,算完以后再校验一次也是可以的,但又增加了时间复杂度,这不是白折腾了吗!

仔细观察解y的后半部分7x/4,这不就是说x是4的倍数嘛,那好办了,假设x=4n,根据上面的范围可以看出n=1,2,3就3种可能。重新整理一下x、y、z关于n的方程:

x = 4n

y = 25-7n

z = 75+3n

C代码:

void hbh()  

{  

    intx=0,y=0,z=0;  

    for ( intn = 1; n<=3; ++n )  

    {  

        x = 4*n;  

        y = 25-7*n;  

        z = 75+3*n;  

        printf( "x=%d, y=%d, z=%d\n", x, y, z );  

    }  

}  

Python代码:

for n in range(1,4):  

    x = 4*n  

    y = 25-7*n  

    z = 75+3*n  

    print( "x=%d, y=%d, z=%d " % (x,y,z) ) 

以前有百钱买百鸡的问题,现在有的孩子都没见过铜钱,在此转述一下,也许更好理解^_^

相关文章

  • 1百块钱买1百颗糖果的问题

    高级糖果5块钱1颗,中级糖果3块钱1颗,低级糖果1块钱3颗,问100块钱买100颗糖果,应该怎么买?要求每种糖果都...

  • 买糖果

    我们每个月都会给孩子10元零花钱。我一般不会阻止孩子买东西,所以孩子都会按照自己的意愿买东西。孩子们都会喜欢买糖吃...

  • 买糖果

    买糖果 七子 在新里 我相信有我正慢慢走向我 可那是最后一步 仍是真 七子 才可贵 而我带我向我走来 只不过画出了...

  • 买糖果

    今天给学生买的糖果到了,我精心为学生挑选了几种励志糖果,希望学生学习起来能充满动力。 强哥看到了,有些不屑一顾的说...

  • JAVA的货币计算

    我们去超市买糖果,口袋里有1块钱,货柜上的糖果有 1角钱,2角钱,3角钱,等等,每个都想买一颗回家吃,接下来我们写...

  • 小熊买糖果🍬

    有只小熊记性很不好,什么话听过就忘记。 一天,小熊家里来了客人,妈妈让小熊到商店去买苹果、鸭梨、牛奶糖。小熊担心忘...

  • JAVA买糖果

    小明开了一家糖果店。他别出心裁:把水果糖包成4颗一包和7颗一包的两种。糖果不能 拆包卖。 小朋友来买糖的时候,他就...

  • 谁来买糖果?

  • 福泽谕吉《劝学·第二篇·平等》(2)

    接上一篇 显贵也好,脚夫也好,生命的重量是相同的。富商的万贯家财也好,小贩买糖果赚的几块钱也好,他们保护自己财产的...

  • 我们总是在不经意之间就长大了 我们开始不再向父母讨要钱 记得小时候 总是喜欢多骗几块钱去买糖果吃 现在 总骗爸妈说...

网友评论

      本文标题:1百块钱买1百颗糖果的问题

      本文链接:https://www.haomeiwen.com/subject/rjchqftx.html