哈尔滨理工大学软件与微电子学院程序设计竞赛G-OXR

XOR

https://ac.nowcoder.com/acm/contest/5929/G

思维题
题解:
因为是异或的计算
我们假设输入了一个10
它对应的二进制是:
1010
那么1-10来说,一共有10中对应的二进制
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
总有一个二进制数可以补齐1010 中0的位置
所以我们直接将1010补位1111输出对应的十进制即可
代码:

/*Keep on going Never give up*/
#pragma GCC optimize(3,"Ofast","inline")
#include <bits/stdc++.h>
const int maxn = 55;
const int MaxN = 0x3f3f3f3f;
const int MinN = 0xc0c0c00c;
typedef long long ll;
const int mod = 100000000;
using namespace std;

int main()
{
    long long n;
    cin>>n;
    if(n==1){
        cout<<0<<endl;
        return 0;
    }
    long long x=1;
    while(x<=n){
        x*=2;
    }
    cout<<x-1<<endl;
    return 0;
}
题解 文章被收录于专栏

主要写一些题目的题解

全部评论

相关推荐

11-03 13:18
门头沟学院 Java
包行:平时怎么刷算法题的哇,字节的手撕听说都很难
字节跳动工作体验
点赞 评论 收藏
分享
只因飞飞:今日首绷
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务