Add 9 Zeros

 链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
 

众所周知一个程序的时间复杂度十分重要,评测机 1s​ 大概能做 10^8次简单运算,所以根据题目所提供的数据范围你就应该精心的策划好你所写程序应该具有的时间复杂度,而在数据范围变大时,想要在时限内完成同样的一个题目,你就不得不设计出一个更快更巧妙的程序,在本题中我们认定数据范围不一样的题目不是同样的题


现在卡夫卡有一个包含 n​ 个不同题目的题集A ,其中第 i​ (1≤i≤n)​ 个题的数据范围为 10^ai​ ,也就是说第 i个题有 ai​ 个 0​ ,数据保证 ai​ 两两不同。

现在他想从题集A里面选出一些题目,然后把选出的题目后面加 9 个 0​ ,然后加入到一个新题集B里面,但是不能有原题,即这个题数据范围加 9个0​ 后的题不能在题集A里面有同样的题,请问卡夫卡所创造的新题集B里面最多能有多少个题。

输入描述:

第一行包含一个整数 n (1≤n≤5×105) --- 表示题集A中的题目个数。

第二行包含 n 个整数 a1,a2,a3,...,an  (1≤ai​≤109) --- 表示每个题数据范围中 000 的个数,保证  个数互不相同。

输出描述:

输出一行一个整数 --- 表示题集 B 中最多能有多少个题。

示例1

9
11 4 5 14 1 9 19 8 10

输出

复制6

6

双指针遍历,如果相减等于9,那么总数减1 

#include <iostream>
#include <algorithm>
using namespace std;

int n,s[1000000];
int main(){
    scanf("%d",&n);
    int k=n;
    for(int i=1;i<=n;i++){
        scanf("%d",&s[i]);
    }
    sort(s+1,s+n+1);
    for(int i=1;i<=n;i++){
        for(int j=i+1;j<=n;j++){
            if(s[j]-s[i]>9){
                break;
            }
            else if(s[j]-s[i]==9){
            k--;
            }
        }
    }
    printf("%d",k);
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

q619718

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值