​题目传送门​


哈尔滨理工大学软件与微电子学院程序设计竞赛——G.XOR【思维】_c++

题解

  • 对于哈尔滨理工大学软件与微电子学院程序设计竞赛——G.XOR【思维】_#include_02的二进制表示哈尔滨理工大学软件与微电子学院程序设计竞赛——G.XOR【思维】_#include_03
  • 那么最佳答案就是哈尔滨理工大学软件与微电子学院程序设计竞赛——G.XOR【思维】_#include_04
  • 比如n的二进制位哈尔滨理工大学软件与微电子学院程序设计竞赛——G.XOR【思维】_c++_05
  • 那肯定是拿哈尔滨理工大学软件与微电子学院程序设计竞赛——G.XOR【思维】_c++_06哈尔滨理工大学软件与微电子学院程序设计竞赛——G.XOR【思维】_#include_07异或
  • 最后全部为哈尔滨理工大学软件与微电子学院程序设计竞赛——G.XOR【思维】_c++_08就是结果

AC-Code

#include <bits/stdc++.h>
using namespace std;
typedef unsigned long long ll;
ll q_pow(ll a, ll n) {
ll res = 1;
while (n) {
if (n & 1) res = res * a;
a = (a * a);
n >>= 1;
}
return res;
}
int main() {
unsigned long long N;
while (cin >> N) {
if(N == 1){
cout << 0 << endl;
continue;
}
unsigned long long num = 0;
while (N > 0) {
++num;
N >>= 1;
}
cout << q_pow(2, num) - 1 << endl;
}
}