今日の最初のプログラミングの問題のアルバムの問題

1169 ワード

タイトル:あなたはデビューした歌手としてついに自分の最初のアルバムを出すことができて、あなたはn首の歌を収录するつもりで、その上すべての歌の长さはすべてs秒で、すべての歌は完全に1枚のCDの中で収录しなければなりません.各CDの容量の長さはL秒で、少なくとも同じCD内の隣接する2つの歌の間に少なくとも1秒間隔があることを保証しなければなりません.魔除けのために、任意のCD内の歌数を13という数字で削除できないことにしました.では、このアルバムを出すには少なくとも何枚のCDが必要ですか?
構想:まず1枚のcdが最大数曲まで放せることを確定して、数学で計算して、t首だと仮定して、それではt*s+t-1=lで、だからt=(l+1)/(s+1);1枚のcdに含まれる曲の数を算出し、ここではtが13の倍数であるかどうかを検証し、13の倍数であれば、1枚のcdの曲の数を1つ減らす、すなわちt-=1である.そして最後に何曲残っているのか、そして残っているのはちょうど13の倍数なのかを見て、最後に残っているのと平均曲量が1だけ足りないのかを見て、1だけ足りなければ、残りの13の倍数を2枚のcdに分解して、つまり必要なcd数に1を加えて、残りの曲が13の倍数だが平均曲量より1つ以上少ないなら、許容できる、つまりcd数は増加しないということです.
最後に実装コードを参照してください.
     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);
}
最後に牛客網について注意しました.私はreturn CDnumを使って、ずっと出力がないと言っていました.consoleを変更しました.log()でなければなりません.もともとjsの出力はconsole.log()はコンソールに書きます.