今日头条编程题 专辑问题
2016-07-24 11:38
393 查看
题目:你作为一名出道的歌手终于要出自己的第一份专辑了,你计划收录 n 首歌而且每首歌的长度都是 s 秒,每首歌必须完整地收录于一张 CD 当中。每张 CD 的容量长度都是 L 秒,而且你至少得保证同一张 CD 内相邻两首歌中间至少要隔 1 秒。为了辟邪,你决定任意一张 CD
内的歌数不能被 13 这个数字整除,那么请问你出这张专辑至少需要多少张 CD ?
思路: 首先先确定一张cd最多能放几首歌,用数学来算,假设是t首,那么t*s + t -1 = l ,所以t = (l+1) /( s+1) ; 算出一张cd包含的歌曲数量,这里要验证一下t是不是13的倍数,如果是13的倍数,每张cd的歌曲数量要减一,即 t
-= 1 ; 然后看最后是不是会剩下几首并且剩下的又恰好事13的倍数,如果是还要看一下最后剩下的和平均歌曲量是不是只差1,如果只差1就只能,把剩下的是13的倍数拆成2张cd,也就是说需要的cd数加1,如果剩下的歌曲是13的倍数但是比平均歌曲量少1个以上,则可以允一下,也就是说cd数量不用增加。
最后看实现代码:
内的歌数不能被 13 这个数字整除,那么请问你出这张专辑至少需要多少张 CD ?
思路: 首先先确定一张cd最多能放几首歌,用数学来算,假设是t首,那么t*s + t -1 = l ,所以t = (l+1) /( s+1) ; 算出一张cd包含的歌曲数量,这里要验证一下t是不是13的倍数,如果是13的倍数,每张cd的歌曲数量要减一,即 t
-= 1 ; 然后看最后是不是会剩下几首并且剩下的又恰好事13的倍数,如果是还要看一下最后剩下的和平均歌曲量是不是只差1,如果只差1就只能,把剩下的是13的倍数拆成2张cd,也就是说需要的cd数加1,如果剩下的歌曲是13的倍数但是比平均歌曲量少1个以上,则可以允一下,也就是说cd数量不用增加。
最后看实现代码:
<span style="color:#333333;"> function do_something(n, s, l){ //你的代码 var songNum = Math.floor((l+1)/(s+1)) > n ? n : Math.floor((l+1)/(s+1)) ; if(songNum % 13 == 0){ songNum -= 1 ; } CDnum = Math.ceil(n/songNum) ; if( n % songNum != 0 && (n % songNum)%13 == 0 && (n % songNum) == songNum -1){
CDnum += 1 } console.log(CDnum); }</span>最后提醒一点关于牛客网的 ,上面我用return CDnum,一直说没有输出,改了console.log()才可以。原来对于js的输出就是用console.log()写到控制台。
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- Android学习笔记(二九):嵌入浏览器
- Android java 与 javascript互访(相互调用)的方法例子
- JavaScript演示排序算法
- javascript实现10进制转为N进制数
- 最后一次说说闭包
- Ajax
- 2019年开发人员应该学习的8个JavaScript框架
- HTML中的script标签研究
- 对一个分号引发的错误研究
- 异步流程控制:7 行代码学会 co 模块
- ES6 走马观花(ECMAScript2015 新特性)
- JavaScript拆分字符串时产生空字符的原因
- Canvas 在高清屏下绘制图片变模糊的解决方法
- Redux系列02:一个炒鸡简单的react+redux例子
- JavaScript 各种遍历方式详解