猫妈妈钓到一些鱼,平均分给7只小猫,每只小猫分到的鱼和剩下的一样多..

猫妈妈钓到一些鱼,平均分给7只小猫,每只小猫分到的鱼和剩下的一样多,问猫妈妈最多钓到多少条鱼!

最近在抖音刷到个很有意思的题目,于是想用js 来计算下!

数学的计算方法

其实表面上看只给了一个已知的值7,那么我们知道,数学是三角关系,一定要已知2个值,才能算出第三个值!

就像已知我身高1米88,他身高多少!你压根算不出来!

公式: 总鱼数/7=每只猫分到的鱼 ... 余数

那么我们就需要寻找第二个值! 

关键字:  平均、一样多、最大;

既然是平均,那么得出剩下的鱼一定比猫的总数小,不然怎么是平均,剩8条鱼即还能再平均分一条! 

那么显而易见,剩余的鱼一定比猫总数小,最大,鱼猫他妈又不知道切块,那隐藏的值为剩下的鱼数字: 7-1=6;

那么余数为6 ; 余数等于 分到的鱼! 每只猫分到6条鱼!

总鱼数/7=6 ... 6

6*7+6= 48!

js计算方法

假设 总鱼数是 z, 小猫分到的鱼是x,那么我们就可以得出!

z%7=x  // 余数等于x
parseInt(z/7)=x  // 每只猫=x parseInt取整,因为猫妈妈不会把鱼切成块平分 ,所以肯只能是整个分了...!

那么就是

z%7 == parseInt(z/7)

接下来就循环下z即可!

    for (z = 1; z < 1000; z++) {
      if ((z % 7) == parseInt(z / 7)) console.log(z)
    }

控制台得到结果!

image.png

最大为48

但是这样感觉不够严谨,因为z<1000是我强行附加的一个条件!

虽然结果对于这题来说不会改变,但是逻辑确实错误的!

再来审题

猫妈妈钓到一些鱼,平均分给7只小猫,每只小猫分到的鱼和剩下的一样多,问猫妈妈最多钓到多少条鱼!

平均分的,那么就可以得到,

剩下的鱼一定比猫少! 不然怎么叫平均呢!  

如果剩8条鱼,那每只猫还能再分一只,就不是平均了!

那么假设得到的鱼为x,所以我们拿已知条件来进行循环,就逻辑不会出错了!

for (x = 1; x < 7; x++) {
}

基础逻辑循环得到了! 接下来得到总鱼数!

总鱼数=每只猫得到的鱼 * 7 + 剩下的鱼!

z=x*7 +y 

每只猫得到的鱼等于剩下的鱼 

z=x*7 +x 

for (x = 1; x < 7; x++) {
    z=(x*7)+x;
    console.log(z)
}

image.png

一样得出结果!

封装js

js世界为了!方便使用的话,我们肯定不能每次都特么写一次!那么我们把他封装下,而且要保证每个人要分一条!

我们返回数组,那么取大取小取总个数就随意了!

function yusize(size){
     let z=[]
        for (let x = 1; x < size; x++) {
          z.push(x * size  + x);
        }
      return z
}

类的使用

    class Yusize {
      constructor(size = 7) {
        this.size = size
      }
      getSize() {
        let z=[]
        for (let x = 1; x < this.size; x++) {
          z.push(x * this.size  + x);
        }
        return z
      }
    }
    new Yusize(7).getSize();

image.png

这样我们就能得到全部的数组了,根据需求取最大最小即可!

相关内容

发表评论

验证码:
点击我更换图片

最新评论