16 条题解
- 
  0
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
 - 标签
 - 递交数
 - 586
 - 已通过
 - 276
 - 上传者