Description
有n个四位数的电话号码,现要将这些电话号码写进电话本里,电话本的每一页只能写第一个数字相同的电话号码,且每页至多写k个,问将这些电话号码写进电话本中至少需要写几页
Input
第一行为一整数k表示每页能够写的电话号码数量,第二行一整数n表示电话号码数量,之后n行每行一个四位数表示一个电话号码
Output
输出将这些电话号码写进电话本中至少需要写几页
Sample Input
5
10
1234
5678
1345
1456
1678
1111
5555
6789
6666
5000
Sample Output
5
Solution
水题,记num[i]为第一个数字为i的电话号码数量,则ans=sum((num[i]-1)/k+1)
Code
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
#define maxn 11
int n,k,a,num[maxn],ans;
int main()
{
while(~scanf("%d%d",&k,&n))
{
memset(num,0,sizeof(num));
ans=0;
for(int i=1;i<=n;i++)
{
scanf("%d",&a);
num[a/1000]++;
}
for(int i=1;i<10;i++)
if(num[i])ans+=(num[i]-1)/k+1;
printf("%d\n",ans+2);
}
return 0;
}