深信服笔试 9.17 两个题 (ac和0.6)

//AC的版本 ,    思路:统计所有数字出现的次数,奇数次数的就说明少的
#include "bits/stdc++.h"
using namespace  std;
int a[20008];
int main(){
    int i,j,n,m;
    cin>>n;
    m = 2*n*n - n;
    unordered_map<int ,int> map;
    vector<int>res;
    for(i =0;i < m;i++){
        cin>>a[i];
        //cout<<a[i]<<endl;
        map[a[i]]++;
    }
    for(auto i:map){
        if(i.second %2 == 1){
           //cout<<i.first<<" ";
            res.push_back(i.first);
        }

    }
    sort(res.begin(),res.end());
    for(i =0;i< res.size();i++)
        cout<<res[i]<<" ";
    cout<<endl;
    return 0;

}

/*
input
3
3 8 12
9 13 20
3 6 9
8 10 13
12 17 20


 6 10 17
 */
 
 
 
//两个版本  都是 0.6  完全暴力不行
#include "bits/stdc++.h"
using namespace  std;
const int MAXN = 10020;
int fluen[MAXN];
int a[MAXN];
int f[MAXN];
int main(){
    int i,j,n,m,k;

    cin>>n>>m;
    memset(f,0,sizeof(f));
    for(i = 0;i < MAXN;i++)
        fluen[i] = 0;
    for(i=0;i<n;i++){
        cin>>a[i];
    }
    //fluen[1] = 1;
    for(i = 0; i<n; i++){
        k = sqrt(a[i]);
        for(j = 1;j <= k; j++){
            if(a[i] % j == 0){
                fluen[j] = 1;
                fluen[a[i]/j] = 1;
            }
        }
    }
    f[0]= 0;
    for(i =1;i<=10000;i++){
        if(fluen[i])
            f[i] = f[i-1] + 1;
        else
            f[i] = f[i-1];

    }
    for(i =0;i<m;i++){
        cin>>j>>k;
        cout<<f[k] - f[j -1]<<endl;
    }

    return 0;
}
/*
input
 
3 1
8 9 20
1 5
 
output 
5
 */

#笔试题目##深信服#
全部评论
第二个改成scanf就100了
点赞 回复
分享
发布于 2020-09-18 09:00
意思是 cin>>a[i]  读入超时的吗?
点赞 回复
分享
发布于 2020-09-18 15:54
博乐游戏
校招火热招聘中
官网直投

相关推荐

1 3 评论
分享
牛客网
牛客企业服务