Pagini recente » Cod sursa (job #2123840) | Cod sursa (job #440091) | Cod sursa (job #1856220) | Istoria paginii runda/9_1/clasament | Cod sursa (job #2158596)
#include <iostream>
#include <fstream>
#include <cmath>
#define ll long long
using namespace std;
ifstream fin("sum.in");
ofstream fout("sum.out");
ll nrd,z,d,x,rz,a,pt,nrp,s,k[10],f[10],dv[80],i,j,n,r[100005];
bool ciur[330];
void sub(int nv,int p)
{
if(nv==z+1)
{
rz+=p*((i*2/p)*(i*2/p+1)/2)*s;
return;
}
for(int i=k[nv-1]+1;i<=nrp;i++)
{
k[nv]=i;
sub(nv+1,p*f[i]);
}
}
int main () {
for(i=2;i<=320;i++)
if(ciur[i]==0)
{
nrd++; dv[nrd]=i;
r[i]=(2*i)*(2*i+1)/2-3*i;
for(j=i*i;j<=320;j+=i) ciur[j]=1;
}
fin>>a;
while(a)
{
a--;
fin>>i;
if(r[i]==0)
{
n=i; d=1;
pt=0; nrp=0;
while(n!=1&&d<=nrd)
{
pt=0;
while(n%dv[d]==0)
{ n/=dv[d]; pt++; }
if(pt!=0)
{ nrp++; f[nrp]=dv[d]; }
d++;
}
if(n>1)
{ nrp++; f[nrp]=n; }
rz=0; s=1;
for(z=1;z<=nrp;z++)
{
sub(1,1);
s*=-1;
}
z=i;
rz=(2*z*(2*z+1)/2)-rz;
r[i]=rz;
}
fout<<r[i]<<"\n";
}
}