其实就是一个进制转化的题目
#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; }