您的位置:首页 > 其它

今日头条2017客户端工程师实习生笔试题

2016-09-27 23:13 357 查看
你作为一名出道的歌手终于要出自己的第一份专辑了,你计划收录 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;
}


此题博主觉得有些麻烦,求各位大神看看。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息