猫妈妈钓到一些鱼,平均分给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) }
控制台得到结果!
最大为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) }
一样得出结果!
封装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();
这样我们就能得到全部的数组了,根据需求取最大最小即可!