题意:
求 nn个组合数的奇数有几个
组合数的一个性质 的话 这个数就是奇数, 这个性质在这个题里面不可写
我们需要利用Lucas 定理 发现规律 就是统计nn里面一共有几个数即可
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
#define ls o<<1
#define rs o<<1|1
#define fi first
#define se second
#define CLR(a, b) memset(a, (b), sizeof(a))
const int INF = 0x3f3f3f3f;
const int mod = 1e9+7;
const int MAXN = 1e4+10;
void F() {
#ifndef ONLINE_JUDGE
freopen("in.txt", "r", stdin);
#endif
}
ll pow_mod(ll a, ll b, ll p) {
ll res = 1;
while(b) {
if(b&1) res = res*a%p;
a = a*a%p;
b >>= 1;
}
return res;
}
ll inv(ll x, ll p) {
return pow_mod(x, p-2, p)%p;
}
ll C(ll a, ll b, ll p) {
if(a < b) return 0LL;
ll ans = 1;
for(int i = 1; i <= b; ++i ) {
ans = ans*(((a+i-b)%p)*inv(i, p)%p)%p;
}
return ans;
}
ll lucas(ll a, ll b, ll p) {
if(b == 0) return 1;
return C(a%p, b%p, p)*lucas(a/p, b/p, p)%p;
}
int main() {
F();
ll n;
while(cin >> n) {
int k = 0;
while(n) {
if(n&1) k++;
n >>= 1;
}
cout << (1<<k) << endl;
}
return 0;
}