Pagini recente » Borderou de evaluare (job #2898754) | Borderou de evaluare (job #2029981) | Borderou de evaluare (job #1793729) | Cod sursa (job #506557) | Cod sursa (job #3181705)
#include <fstream>
#include <vector>
#define ll long long
using namespace std;
const int VMAX = 1e5;
vector <int> g[VMAX + 1];
ll ans[VMAX + 1];
void ciur()
{
int i, j;
for (i = 2; i <= VMAX; i++)
if (g[i].empty())
for (j = i; j <= VMAX; j += i)
g[j].push_back(i);
}
ll gauss(int val)
{
return 1LL * val * (val + 1) / 2;
}
void solve()
{
int i, j;
ciur();
for (i = 2; i <= VMAX; i++)
{
ans[i] = gauss(2 * i);
for (int msk = 1; msk < (1 << g[i].size()); msk++)
{
int prod = 1;
int cnt = 0;
for (j = 0; j < g[i].size(); j++)
if (msk & (1 << j))
{
prod *= g[i][j];
cnt++;
}
int pinex[2] = {1, -1};
int nr = 2 * i / prod;
ans[i] += pinex[cnt & 1] * (gauss(nr) * prod);
}
}
}
signed main()
{
ifstream cin("sum.in");
ofstream cout("sum.out");
//ios_base :: sync_with_stdio(0);
//cin.tie(0);
solve();
int q;
cin >> q;
while (q--)
{
int x;
cin >> x;
cout << ans[x] << "\n";
}
}