本文主要是介绍哈尔滨理工大学软件与微电子学院程序设计竞赛(同步赛)G,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- XOR
- 题解
- AC代码
- 代码1
- 代码2
XOR
题解
易知:从1
到N
,若数字N
本身二进制位不全为1
一定存在数字k
与N异或后得到二进制位全为1
。
举个例子:从0到4
4:100
3:011
2:010
1:001
0:000
那么我们要做的就是输出这个二进制位全为1的数字。
AC代码
代码1
#include <bits/stdc++.h>//#pragma GCC optimize(2)
#define IO ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define ull unsigned long long
#define ll long long
#define rep(i, x, y) for(int i=x;i<=y;i++)
#define mms(x, n) memset(x, n, sizeof(x))
#define pre(i, x, y) for(int i = x; i >=y; i--)
#define INF (0x3f3f3f3f)
#define mod (1e9+7)using namespace std;
int main() {ll n;cin >> n;if (n==1) cout << 0;else {ll a = 1;while (a <= n) {a *= 2;}cout << a-1;}return 0;
}
代码2
#include <bits/stdc++.h>//#pragma GCC optimize(2)
#define IO ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define ull unsigned long long
#define ll long long
#define rep(i, x, y) for(int i=x;i<=y;i++)
#define mms(x, n) memset(x, n, sizeof(x))
#define pre(i, x, y) for(int i = x; i >=y; i--)
#define INF (0x3f3f3f3f)
#define mod (1e9+7)using namespace std;
int main() {ll n;cin >> n;if (n==1) cout << 0;else {ll a = 1;while(n) {n >>= 1;a <<= 1;}cout << a-1;}return 0;
}
这篇关于哈尔滨理工大学软件与微电子学院程序设计竞赛(同步赛)G的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!