今日頭條2017客戶端工程師實習生筆試題

你作爲一名出道的歌手終於要出自己的第一份專輯了,你計劃收錄 n 首歌而且每首歌的長度都是 s 秒,每首歌必須完整地收錄於一張 CD 當中。每張 CD 的容量長度都是 L 秒,而且你至少得保證同一張 CD 內相鄰兩首歌中間至少要隔 1 秒。爲了辟邪,你決定任意一張 CD 內的歌數不能被 13 這個數字整除,那麼請問你出這張專輯至少需要多少張 CD ?
輸入描述:
每組測試用例僅包含一組數據,每組數據第一行爲三個正整數 n, s, L。 保證 n ≤ 100 , s ≤ L ≤ 10000
輸出描述:
輸出一個整數代表你至少需要的 CD 數量。
輸入例子:
7 2 6
輸出例子:
4

思路分析:1、算出一張CD能容納多少首歌(注意一張CD的歌數不能被13整除,留意倒數第二張CD的歌數);2、計算出總共需要多少張CD。

C代碼如下:

#include<stdio.h>
int countOfCD(int n,int s,int L);
int main(void)
{
    int n,s,L,count;
    ;
    while(!(3 == scanf("%d %d %d",&n,&s,&L) && n <= 100 && s <= L && L <= 10000))
        continue;
    count = countOfCD(n,s,L);
    printf("%d\n",count);
    return 0;
}

//一張CD能放count首歌,一共需要res張CD;
int countOfCD(int n,int s,int L)
{
    int i,count = 0,res;
    for(i = 0;i < n;i++)
    {
        if(i == 0 && s <= L)
        {
            count++;
        }
        else if(i > 0 && (s + (1 + s) * i) <= L)
        {
            count++;
        }
        else
        {

            if(0 == count % 13)
            {
                count--;
            }

            if(13 == n % count)
            {
                res = n / count + 2;
            }
            else if(n % count)
            {
                res = n / count + 1;
            }
                else
            {
                res = n / count;
            }
            break;
        }
    }

    return res;
}

此題博主覺得有些麻煩,求各位大神看看。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章