深信服笔试 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
*/
#笔试题目##深信服#

