CD Making 逻辑数学题

来源:互联网 发布:鸳鸯是一夫一妻吗 知乎 编辑:程序博客网 时间:2024/06/03 18:07

Tom has NN songs and he would like to record them into CDs. A single CD can contain at mostKK songs. In addition, Tom is very superstitious and he believes the number 13 would bring bad luck, so he will never let a CD contain exactly1313 songs. Tom wants to use as few CDs as possible to record all these songs. Please help him.

Input

There are TT test cases. The first line gives TT, number of test cases. TT lines follow, each contains NN and KK, number of songs Tom wants to record into CDs, and the maximum number of songs a single CD can contain.

1N1000,1K10001≤N≤1000,1≤K≤1000

Output

For each test case, output the minimum number of CDs required, if the above constraints are satisfied.

Sample Input
25 213 13
Sample Output
32
Hint

If Tom has 55 songs to record and a single CD can contain up to 22 songs, Tom has to use 33 CDs at minimum, each contains 22,22,11 songs, respectively.

In the second case, Tom wants to record 1313 songs, and a single CD can hold 1313 songs at most. He would have been able to use only 11 CD if he were not so superstitious. However, since he will not record exactly 1313 songs into a single CD, he has to use 22 CDs at least, the first contains 1212 songs and the second contains one(Other solutions to achieve 22 CDs are possible, such as (1111,22), (1010,33), etc.).

题目大意:

把n首歌放到CD中,每个CD最多放k首歌,但是每个CD不能放13首,给出n和k求需要的CD数;

思路:k=13时,把k--;k<13时,相除看余数是否进一;k>13时,看余数是否为13,考虑n/k是否为0;

#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<vector>#include<queue>#define max_n 10010typedef long long LL;using namespace std;int main(){int t,n,k;scanf("%d",&t);while(t--){scanf("%d %d",&n,&k);if(k==13){k--;if(n%k==0)printf("%d\n",n/k);else printf("%d\n",n/k+1);}else if(n==13 && n<k) //特殊考虑 printf("2\n");else{if(n%k==0)printf("%d\n",n/k);else if(n%k==13){if(k==14)printf("%d\n",n/k+2);else printf("%d\n",n/k+1);}else printf("%d\n",n/k+1);}}return 0;}

0 0