Pagini recente » Monitorul de evaluare | Cod sursa (job #2796585) | Istoria paginii runda/oni_10_1/clasament | Cod sursa (job #2646095) | Cod sursa (job #1799183)
# include <fstream>
# include <cstring>
# include <bitset>
using namespace std;
ifstream fin("sum.in");
ofstream fout("sum.out");
bitset<500> f;
int d[300],e[15],b[15],n,x,y,i,j,r,k,t,p,nr;
long long sol;
int main () {
for(i=2;i<=490;i++)
if(!f[i]){
d[++k]=i;
for(j=2*i;j<=490;j+=i)
f[j]=1;
}
fin>>n;
for(r=1;r<=n;r++){
sol=0;
t=0;
memset(b,0,sizeof(b));
fin>>x;
y=x;
for(i=1;i<=k;i++){
if(y%d[i]==0)
e[++t]=d[i];
while(y%d[i]==0)
y/=d[i];
}
if(y>1)
e[++t]=y;
x*=2;
while(!b[0]){
j=t;
while(b[j]==1)
b[j--]=0;
b[j]=1;
p=1;
nr=0;
for(i=1;i<=t;i++){
nr+=b[i];
if(b[i])
p*=e[i];
}
if(nr%2==0)
sol+=1LL*p*(x/p)*(x/p+1)/2;
else
sol-=1LL*p*(x/p)*(x/p+1)/2;
}
fout<<sol<<"\n";
}
return 0;
}