8.26华为机试第一题,求帮看问题,过了18.8%
#include <iostream>
using namespace std;
int main(void)
{
int n = 0;
unsigned int num = 0;
unsigned int nums[1000] = {0};
while ( cin >> num ) {
unsigned int part1 = num & 0x5555;
unsigned int part2 = num & 0xaaaa;
part1 = part1 << 1;
part2 = part2 >> 1;
nums[n] = part1 | part2;
n++;
}
unsigned int bit2_1 = 0;
bit2_1 = nums[0] & 0x0003;
nums[0] = nums[0] >> 2;
for(int i = 1; i < n; i++) {
unsigned int bit2_2 = nums[i] & 0x0003;
nums[i] = nums[i] >> 2;
bit2_1 = bit2_1 << 30;
nums[i] = nums[i] ^ bit2_1;
bit2_1 = bit2_2;
}
nums[0] = nums[0] ^ (bit2_1 << 30);
for(int i = 0; i < n; i++) {
cout << nums[i] << " ";
}
return 0;
} #华为#
查看5道真题和解析
