51nod 2503 兔子的数量

 2503 兔子的数量

每个兔子都有颜色。其中一些兔子(可能是全部)告诉你还有多少其他的兔子和自己有相同的颜色(不包括自己)。问森林中的兔子最少有多少只?

例如:有 4 只兔子给出了答案,分别是 1 1 2 2,我们认为 2 个回答 1 的兔子颜色相同,这样共有 2 只兔子。2 个回答 2 的兔子颜色相同,那么可能还有另外一只与这两只颜色相同,因此共有 3 只,这样最少也有 5 只兔子。

收起

输入

第一行输入一个数n,表示回答问题的兔子的数量(0≤n≤100000);
第二行输入n个数,中间用空格分隔,表示上面n个回答对应的答案(0≤a[i]≤999);

输出

输出一个数,表示最少的兔子数量

数据范围

(0≤n≤100000, 0≤a[i]≤999)

输入样例

3
1 1 2

输出样例

5

样例解释

两个1分为一组,有两只兔子。一个2分为一组,即除了这只兔子自己,还有两只,即有三只兔子,这样最少共有5只兔子。

Code:

#include <bits/stdc++.h>
using namespace std;
int a[1010],ans;
int main() { 
    int n,x;
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>x;
        a[x+1]++;
    }
    for(int i=0;i<1005;i++){
        if(a[i]>0){
            ans+=(a[i]+i-1)/i*i;
        }
    }
    cout<<ans;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值