16 条题解
-
-1
1.int型最多存储31位整形[即正负数都有,范围在- − -1],而unsigned int也是31位,但是存储的是正整数[范围是 − -1]。
2.C++运算中,若出现溢出,则 自动取模 。举个例子:在unsigned int型当中,计算+400时,实际的运算是(+400)%,结果就是400.
综合以上几点,能不能发现什么呢?
问题让我们求的其实是2进制下交换前后16位,不就是向左移16位(根据上文2.),加上右移16位吗?
代码如下
#include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #include<algorithm> using namespace std; int main(){ unsigned int n; cin>>n; cout<< (n<<16)+(n>>16); return 0; }
信息
- ID
- 1219
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 4
- 标签
- 递交数
- 516
- 已通过
- 238
- 上传者