好未来第二题,求解哪里错了

#include <iostream>
#include <algorithm>
#include <vector>
#include <cassert>
#include <random>
using namespace std;
#define ull unsigned long long
//我的代码,0%
ull solve(ull x, ull k) {
ull res = 0;
int ik = 0;
for (int ix = 0; ix < 64; ++ix) {
if (!((x >> ix) & 1)) {
res |= ((k >> ik) & 1) << ix;
++ik;
}
}
return res;
}
//大佬的代码
ull solve1(ull x, ull k) {
int posX[160], posK[160], posA[160];
ull ans, a, lenX, lenK, lenA;
int i, j;
memset(posX, 0, sizeof(posX));
i = 0, ans = 0;
while (x > 0) {
posX[i++] = x & 1;
x = x >> 1;
}
lenX = i;
i = 0;
while (k > 0) {
posK[i++] = k & 1;
k = k >> 1;
}
lenK = i;
for (i = 0, j = 0, a = 0; j < lenK; i++) {
if (posX[i] == 0)
posA[a++] = posK[j++];
else
posA[a++] = 0;
}
lenA = a;
for (i = lenA - 1; i >= 0; i--) {
ans = ans << 1;
ans = ans | posA[i];
}
return ans;
}
int main() {
//int t, x, k;
//cin >> t;
//while (t--) {
//  cin >> x >> k;
//  cout << solve1(x, k) << endl;
//}
std::default_random_engine e;
std::uniform_int_distribution<ull> u;
for (int i = 0; i < 10000; ++i) {
ull x = u(e);
ull k = u(e);
assert(solve(x, k) == solve1(x, k));
}
return 0;
}
和题解里大佬的AC代码自己写对数器验证了应该是没问题的#好未来#
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务