\ (N- \) completamente icono número de puntos \ ((n --- 0. 1) \) , \ (I \) y \ (J \) de borde conectado valor de peso \ (i \ \ textrm {XOR } \ j \) , la evaluación del MST
Solución
Set \ (f [n] \) representado por puntos es \ (n + 1 \) respuesta, las posibilidades codicioso considerado, obviamente \ (f [0] = 0 , f [n] = f [n-1] + lowbit (n) \)
La observación fácilmente disponible \ (F [n-] = 2F [n-- 1.] + 2 ^ n -. 2 ^ {. N-- 1} \) , y porque \ (F [] \) es un \ (lowbit \) prefijo y cumplir con aditivo, de manera tan directa \ (n \) la descomposición binaria y estadísticas a la respuesta
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1000005;
int f[N],n,ans;
signed main() {
cin>>n;
--n;
f[0]=1; f[1]=3; f[2]=8;
for(int i=3;i<=40;i++)
f[i]=f[i-1]*2-(1ll<<(i-1))+(1ll<<i);
for(int i=0;i<=40;i++) if(n&(1ll<<i)) ans+=f[i];
cout<<ans;
}