本题来源于山东理工大学第五届新生编程争霸赛暨2023级SDUTACM集训队第一次选拔赛
#include <bits/stdc++.h>
using namespace std;
int p(int n)
{
int a = 1;
for (int i = 1; i <= n; i++)
a *= 2;
return a;
}
int main()
{
int t, n;
cin >> t;
for (int i = 1; i <= t; i++)
{
cin >> n;
if (n == 1)
cout << "1" << endl;
else
{
int sum = 0;
int j = 1;
while (1)
{
n -= p(j);
if (n < p(j + 1))
break;
j++;
}
for (int q = 1; q <= j; q++)
sum += p(q) * q;
sum += (j + 1) * n;
cout << sum << endl;
}
}
return 0;
}