Pagini recente » Borderou de evaluare (job #1575222) | Cod sursa (job #1703555) | Monitorul de evaluare | Borderou de evaluare (job #1923380) | Cod sursa (job #3337655)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("sum.in");
ofstream fout("sum.out");
int ciur[100001];
int factori[100001][11];
int nrfactori[100001];
int main()
{
nrfactori[2]=2;
for(int i=2;i<=100000;i++) {
if(ciur[i]==0) {
for(int j=1;i*j<=100000;j++) {
ciur[i*j]=1;
nrfactori[i*j]++;
factori[i*j][nrfactori[i*j]]=i;
}
}
}
int n,x,y,z,a,cnt,ras=0,k;
fin>>n;
for(int i=1;i<=n;i++) {
fin>>x;
k=1;
for(int j=1;j<=nrfactori[x];j++) k*=2;
k--;
ras=0;
for(int j=1;j<=k;j++) {
y=1;
z=j;
a=1;
cnt=0;
while(z) {
if(z%2==1) {
y*=factori[x][a];
cnt++;
}
a++;
z/=2;
}
if(y) {
if(cnt%2==1) ras+=y*(2*x/y)*(2*x/y+1)/2;
else ras-=y*(2*x/y)*(2*x/y+1)/2;}
}
fout<<x*(2*x+1)-ras<<'\n';
}
return 0;
}