JS | 教练,我想做习题8

🚀 前言

大家好呀,我是毛小悠,可以叫我二毛,在家中排行老二,是一名前端开发工程师。

本系列文章旨在通过练习来提高JavaScript的能力,一起愉快的做题吧。😀😀😀

以下每道题,二毛我都有尝试做一遍。建议限时训练,比如限定为半小时,如果半小时内想不出来,可以结合文章末尾的参考答案来思考。

求关注求点赞👍~~~😘😘😘

📖 题目1:N的尾随零数!

编写一个程序,该程序将计算给定数阶乘中的尾随零数。

N!= 1 * 2 * 3 * … * N

小心1000!有2568位数字…

有关更多信息,请参见:http : //mathworld.wolfram.com/Factorial.html

例子

zeros(6) = 1
# 6! = 1 * 2 * 3 * 4 * 5 * 6 = 720 --> 1 trailing zero

zeros(12) = 2
# 12! = 479001600 --> 2 trailing zeros

提示:您并不需要计算阶乘。寻找另一种方法来找到零的数量。

习题代码

function zeros (n) {
   
  // your code here  
}

📖 题目2:整数:娱乐一

42的除数是:1、2、3、6、7、14、21、42。这些除数的平方是:1、4、9、36、49、196、441、1764。平方除数的总和是2500,这是50 * 50,一个正方形!

给定两个整数m,n(1 <= m <= n),我们希望找到m和n之间的所有整数,它们的平方除数之和本身就是一个平方。42就是这样一个数字。

结果将是一个数组或元组的数组(在C中为Pair的数组)或一个字符串,每个子数组都有两个元素,第一个元素是平方除数为平方的数字,然后是平方除数的总和。

例子:

list_squared(1, 250) --> [[1, 1], [42, 2500], [246, 84100]]
list_squared(42, 250) --> [[42, 2500], [246, 84100]]

习题代码

function listSquared(m, n) {
   
    // your code
}

📖 题目3:双可乐

Sheldon,Leonard,Penny,Rajesh和Howard正在自动售货机排队购买“ Double Cola”饮料。队列中没有其他人。队列中的第一个(Sheldon)买了一个罐子,喝下后加倍!由此产生的两个谢尔顿进入队列的末端。然后,队列中的下一个(Leonard)买了一个罐头,喝了一下,然后作为两个Leonards到达队列的末端,依此类推。

例如,Penny喝了第三罐可乐,队列如下所示:

Rajesh, Howard, Sheldon, Sheldon, Leonard, Leonard, Penny, Penny

编写一个程序,该程序将返回将喝第n可乐的人的名字。

输入:

输入数据由一个至少包含1个名称的数组和一个整数n组成,该整数可能与您选择的语言支持的最大数字一样高(当然,如果有这样的限制)。

输出/示例:

返回单行-喝第n罐可乐的人的名字。罐从1开始编号。

whoIsNext(["Sheldon", "Leonard", "Penny", "Rajesh", "Howard"], 1) == "Sheldon"
whoIsNext(["Sheldon", "Leonard", "Penny", "Rajesh", "Howard"], 52) == "Penny"
whoIsNext(["Sheldon", "Leonard", "Penny", "Rajesh", "Howard"], 7230702951) == "Leonard"

习题代码:

function whoIsNext(names, r){
   
  //your code here
}

答案

🍗 题目1的答案

参考答案1:

function zeros (n) {
   
  var zs = 0;
  while(n>0){
   
    n=Math.floor(n/5);
    zs+=n
  }
  return zs;
}

参考答案2:

function zeros(n) {
   
  return n/5 < 1 ? 0 : Math.floor(n/5) + zeros(n/5);
}

参考答案3:

function zeros (n) {
   
  var res = 0;
  for(var i=5; i<n; i*=5)
    res += Math.floor(n/i);
  return res;
}

参考答案4:

function zeros(n){
    //trailing zeroes of n!
   var countfives = 0,
       pow5 = 1,
       occurances;
   while
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值