Cod sursa(job #2158515)

Utilizator shantih1Alex S Hill shantih1 Data 10 martie 2018 13:37:14
Problema Sum Scor 75
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <iostream>
#include <fstream>
#include <cmath>
#define ll long long
using namespace std;
ifstream fin("sum.in");
ofstream fout("sum.out");

ll y,nrd,z,d,r,x,rz,a,pt,nrp,s,r1,r2,k[10],f[10],dv[80],i,j,n;
bool ciur[330];

void sub(ll nv,ll p)
{
	if(nv==z+1)
	{
		rz+=p*((i*2/p)*(i*2/p+1)/2)*s;
		return;
	}
	for(ll 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;
			for(j=i*i;j<=320;j+=i)	ciur[j]=1;
		}
	
	fin>>a;
	while(a)
	{
		a--;
		fin>>i;
		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;
		fout<<rz<<"\n";
	}
}