华为笔试题
第一题:
给一个字符串 都是16进制表示的,其中有两个需要转码 忘了那几个了 比如 AB : AB CD, AC: AC FF
例子
7 1 2 3 4 5 AB AC
输出
9 1 2 3 4 5 AB CD AC FF
需要注意的点:第一个也是16进制的,比如原来是 9 转成 10要输出 A
第二题
输入 a,b
输出 [a,b) 之间所有素数的 个位和 和 十位和 的较值
具体的看code
注意点:输入比较大,不能暴力求素数
ps 第三题题目
给n<=100个group,比如{1,2,3,4} 、{2,5} {1,6} ,然后1 发一个消息到他所在的所有group ,然后,收到消息的转发一次,问最后多少人收到了
group长度没告诉你
第三题就a了80%
#include <iostream>
#include <set>
#include <string>
#include <vector>
#include <map>
#include <algorithm>
using namespace std;
#define MAX_N = 10010;
int no=1;
map<string,int> mp;
int get_n(string &s) {
if(mp.count(s)) return mp[s];
mp[s] = no++;
return mp[s];
}
int stno;
vector<vector<int>> vvs;
vector<int> one;
void get_va(int d) {
vvs.resize(d);
getchar();
for(int i=0;i<d;i++){
string tmp;
getline(cin,tmp);
while(tmp.size()) {
auto p = find(tmp.begin(),tmp.end(),',');
if(p==tmp.end()){
int n=get_n(tmp);
vvs[i].push_back(n);
if(s==stn)
break;
}else{
int pos = p-tmp.begin();
string t =tmp.substr(0,pos);
int n=get_n(t);
vvs[i].push_back(n);
tmp=tmp.substr(pos+1);
}
}
}
return ;
}
int main() {
string s;
int d;
cin>>s;
cin>>d;
stno = get_n(s);
get_va(d);
vector<set<int>> dij(no);
for(int i=0;i<d;i++) {
for(auto sn: vvs[i]) {
for(auto en: vvs[i]) {
if(sn!=en) {
dij[sn].insert(en);
dij[en].insert(sn);
}
}
}
}
vector<bool> vst(no,false);
vector<int> st;
for(int i : dij[stno]) {
st.push_back(i);
vst[i] = true;
}
for(auto v: st) {
for(int i : dij[v]) {
vst[i] = true;
}
}
int ans = 0;
for(auto v: vst) {
if(v==true) {
ans++;
}
}
cout<<ans;
return 0;;
} #include <iostream>
#include <map>
#include <string>
#include <vector>
#include <cmath>
#include <algorithm>
using namespace std;
#define MAX_N 1000010
int isp[MAX_N]={0};
void cal_p(int e) {
isp[2]=0;
for(int i=2;i<e;i++) {
if(isp[i]==0) {
// cout<<i<<endl;
for(int j=i+i;j<e;j+=i) isp[j]=1;
}
}
}
int main() {
int s,e;
cin>>s>>e;
cal_p(e);
int s10=0;
int s1=0;
for(int i=s;i<e;i++) {
if(isp[i]==0) {
// cout<<i<<endl;
s1 += i%10;
s10 += ((i%100)/10);
}
}
cout<<min(s1,s10);
return 0;;
} 第一题: 编解码,主要难点是第一个 需要做进制转换 比如10 -》16
ps 第三题题目
给n<=100个group,比如{1,2,3,4} 、{2,5} {1,6} ,然后1 发一个消息到他所在的所有group ,然后,收到消息的转发一次,问最后多少人收到了
group长度没告诉你
传音控股公司福利 315人发布
查看12道真题和解析