美文网首页
今日头条2017笔试题:出专辑

今日头条2017笔试题:出专辑

作者: Switchhh | 来源:发表于2018-08-20 10:59 被阅读32次

    你作为一名出道的歌手终于要出自己的第一份专辑了,你计划收录 n 首歌而且每首歌的长度都是 s 秒,每首歌必须完整地收录于一张 CD 当中。每张 CD 的容量长度都是 L 秒,而且你至少得保证同一张 CD 内相邻两首歌中间至少要隔 1 秒。为了辟邪,你决定任意一张 CD 内的歌数不能被 13 这个数字整除,那么请问你出这张专辑至少需要多少张 CD ?

    while(input = readline()){
      var lines = input.split(" ");
      var n = parseInt(lines[0]);
      var s = parseInt(lines[1]);
      var L = parseInt(lines[2]);
      var x;  //设每张CD收录x首歌
      x=(L+1)/(s+1);
      x = Math.floor(x);  //求出x
      var ans = Math.ceil(n/x);  //求出非特殊条件下的结果
      if( x%13 == 0 ){
        x = x-1;  //如果x是13倍数,那么每张CD都要少收录1首
        ans = Math.ceil(n/x);
      }
      if( n < x && n%13 == 0 ){
        ans = 2;//如果仅需要一张CD但是收录了13倍数的歌曲需要加一张,如“13 0”
      }
      if( (n-(ans-1)*x)%13 == 0 && x-(n-(ans-1)*x) == 1 ){
        //如果最后一张CD是13的倍数【(n-(ans-1)*x)%13 == 0】,可以把前一张拿过来一首,但是拿过来后前一张又可能会是13的倍数
        //这时候也需要再加一张CD,比如这样的情况“14 14 13” “27 27 27 26”
        //这样情况的条件是最后一个必须比前一个少1【x-(n-(ans-1)*x) == 1】
        //所以满足上述两项条件的时候总CD需要加1
        ans += 1;
      }
      print(ans);
    }
    

    相关文章

      网友评论

          本文标题:今日头条2017笔试题:出专辑

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