『题解』SPOJ SP32201 RSHIFT - Right Shift

题目传送门

题目大意

给定 \(n<2^{64}\),求 \(n\) 在二进制下右移 \(1\) 位并在最高位补 \(0\) 的数在十进制下的值。

多组数据(\(t \le 5 \times 10^5\))。

思路

万恶的 C++ 提供了在二进制下右移 \(1\) 位的运算符 >>,于是可以直接用这个了。

注意 \(n<2^{64}\),所以需要开 unsigned long long

这样就能 A 掉这题了,此题输入输出量很大,所以建议用 scanfprintf 或快读快写。

代码

#include <iostream>
using namespace std;
int t;
unsigned long long n;

int main(){
    scanf("%d",&t);
    while(t--){
        scanf("%llu",&n);
        printf("%llu\n",n>>1);
    }
    return 0;
}
posted @ 2022-08-15 10:33  仙山有茗  阅读(80)  评论(0编辑  收藏  举报