题目:
代码:
#include#include #include #include using namespace std; int main() { long long arr[32] = {0}; int n,i=0; long long count = 0; cin >> n; while(n) { arr[i] = n % 2; n = n / 2; i++; } for (int i = 0; i < 16; i++) swap(arr[i],arr[i+16]); for (int i = 31; i >= 0; i--) { long long m = pow(2, i); count = count + arr[i] * m; } cout << count << endl; }
首先,我的解决方法是将十进制数每次模二后存在数组里,这样二进制数就被逆序存在数组里,然后逆序输出就可以了。
其中65333513进去判断时会因为int的问题导致出错,换成long long后就没有问题了。
最后这道题应该是可以通过位运算解决,但是目前还是因为太菜了,后续学习后会添加位运算的解法代码。



