思维-J. Even Numbers

先达标找规律吧,达标的时候看奇数的个数而不是偶数的个数,就能和看出来了

 

这个题我算pow(2,n)的时候又出现了向下取整的情况,所以就是说,以后算2的n次方 直接1ll<<n就完了。

https://codeforces.com/gym/101972/problem/J

#include<bits/stdc++.h>
#define endl '\n'
#define _for(i,a,b) for(int i=a;i<b;i++)
using namespace std;
const int N = 1e5+5;
typedef long long ll;
int main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    ll n; int t; cin>>t;
    while(t--){
        cin>>n;
        ll cnt1=0; ll tem = n;
        while( n ){
            if(n%2) cnt1++;
            n/=2;
        }
        cout<<tem +1 - (1ll<<cnt1) <<endl;
    } 
    return 0;
}

 

posted @ 2020-03-10 15:56  SunCY  阅读(124)  评论(0编辑  收藏  举报