码迷,mamicode.com
首页 > 其他好文 > 详细

网易-出专辑

时间:2016-08-07 23:13:59      阅读:260      评论:0      收藏:0      [点我收藏+]

标签:

题目:

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

输入描述: 
每组测试用例仅包含一组数据,每组数据第一行为三个正整数 n, s, L。 保证 n ≤ 100 , s ≤ L ≤ 10000

输出描述: 
输出一个整数代表你至少需要的 CD 数量。

输入例子: 
7 2 6

输出例子: 
4

分析:1. 先求出一张专辑能存储的最大数目的t,count*s+count-1<=L,即count=(L+1)/(s+1),如果count%13==0。则count--;

   2. 考虑余数n%t不等于0,也就是最后一张专辑的歌曲数会出现的情况。如果余数是13的倍数,可以考虑从倒数第二张专辑中借一首歌,但此时倒数第二张专辑的歌曲数如果能被13整除,这种情况只能再多出一张专辑。 

 

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while(in.hasNext()) {
            int n = in.nextInt();    // 总共n首歌曲
            int s = in.nextInt();    // 每首歌占用时间
            int l = in.nextInt();     // 每张CD的时间容量
        
            int count = (l + 1 ) / (s + 1);   // 每张CD存储的歌曲数
            if(count > n)
                count = n;
            if(count % 13 == 0) {
                count --;
            }
            int sum = n / count; // 需要的专辑数
            int yu = n % count;  // 最后一张专辑歌曲数
            if(yu != 0) {                                   // 最后一张专辑数不等于0,余数肯定小于count,
                sum ++;                                        // 所以如果余数能被13整除,可以向倒数第二张专辑借一首,
                if((count -1 == yu) && (yu % 13 == 0)) {    // 但是若借后导致倒数第二张专辑歌曲数是13的倍数,就不能借
                    sum ++;                                    // 此时只能 再多加一张专辑
                }
            }
            System.out.println(sum);               
        }    
    }
}

 

网易-出专辑

标签:

原文地址:http://www.cnblogs.com/zywu/p/5747458.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!