荣耀机试第一题
作者:
半醒的狐狸
,
2022-04-28 20:47:11
,
所有人可见
,
阅读 440
#include <bits/stdc++.h>
using namespace std;
int AndOperator(int a, int b) {
return a & b;
}
vector<int> Split(string ip) {
vector<string> ip_1(4);
int j = 0;
for (int i = 0; i < ip.size(); i ++ ) {
if (ip[i] == '.') {
j ++ ;
continue;
}
ip_1[j] += ip[i];
}
vector<int> ipv1(4);
for (int i = 0; i < ip_1.size(); i ++ ) {
int tmp = 0;
for (int j = 0; j < ip_1[i].size(); j ++ ) {
tmp = tmp * 10 + ip_1[i][j] - '0';
}
ipv1[i] = tmp;
}
return ipv1;
}
int main() {
string ip1, ip2, yanma;
cin >> ip1 >> ip2 >> yanma;
vector<int> p1 = Split(ip1);
vector<int> p2 = Split(ip2);
vector<int> yama = Split(yanma);
vector<int> ans1(4);
vector<int> ans2(4);
for (int i = 0; i < 4; i ++ ) {
ans1[i] = AndOperator(p1[i], yama[i]);
ans2[i] = AndOperator(p2[i], yama[i]);
}
string res;
for (int i = 0; i < 4; i ++ ) {
if (i == 3) {
res += to_string(ans1[i]);
break;
}
res += to_string(ans1[i]) + ".";
}
bool isSame = true;
for (int i = 0; i < 4; i ++ ) {
if (ans1[i] != ans2[i]) {
isSame = false;
}
}
if (isSame) cout << 1 << ' ' << res;
else cout << 0 << ' ' << res;
return 0;
}