JavaCode
import java.util.Scanner;
public class numOfCD {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
int s = scan.nextInt();
int L = scan.nextInt();
scan.close();
System.out.println(solve(n, s, L));
}
static int solve(int n, int s, int L){
int count = (L+1) / (s+1);
if(n < count && (n % 13 == 0)) return 2;
if(count % 13 == 0)
count--;
int remainder = n % count;
if(remainder == 0)
return n / count;
else if(remainder % 13 == 0 && remainder == count-1)
return (n / count + 2);
else
return (n / count + 1);
}
}
说明
- 本题主要难点在于分析和处理例外情况,也就是每张CD存储的歌曲数目不能是13的倍数。
- 本题在牛客网的测试用例不够全面,当把else if(remainder % 13 == 0 && remainder == count-1)这句换成else if(remainder == 13 && count == 14) 时也能AC。实际上,当n=53,s=1, L=51时,两张CD中分别存了27和26首歌,这是不符合要求的,必须要用三张CD了,也就是说后者的写法只是前者写法的一种case,题目要求的不仅仅是每张CD不能存13首歌,而是不能存13的倍数首歌。