华为笔试题
第一题:
给一个字符串 都是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长度没告诉你