其实就是一个进制转化的题目
#include<bits/stdc++.h>
#define m 32
using namespace std;
typedef long long ll;
int main(){
ll n;
cin>>n;
int a[32]={0};
ll k = 32;
int now;
while(n){
now = n % 2;
a[k] = !now; //因为要取反,所以可以在这里直接取
n /= 2;
k--;
}
ll sum =0;
for(int i=1;i<=m;i++){//这里不用反转直接就能求答案,好好思考下
if(a[i] == 1){
sum += pow(2,i-1);
}
}
cout<<sum<<endl;
}
京公网安备 11010502036488号