SGU 127 Telephone directory(水~)

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;
}

你可能感兴趣的:(SGU 127 Telephone directory(水~))