Cod sursa(job #222186)

Utilizator SheepBOYFelix Liviu SheepBOY Data 20 noiembrie 2008 22:50:59
Problema Sum Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include<stdio.h>
int k,nr,vf[200000];
inline long long GetDivis(int x)
{
	long long sum,upper_lim,lm;
	int i,j;
	sum=0;
	upper_lim=(x<<1);
	vf[x]++;
	sum+=x;
	vf[upper_lim]++;
	sum+=upper_lim;
for(i=2;i<=(x>>1);++i)
	if(!(x%i))
	{
		lm=i;
		for(j=1;lm<upper_lim;++j)
		{
			lm=i*j;
			if(vf[lm]<k&&lm!=x&&lm!=upper_lim)
			{	sum+=lm;vf[lm]++;}
		}
			
	}
	return ((upper_lim*(upper_lim+1))>>1)-sum;
}
int main()
{
	int n,x;
	freopen("sum.in","r",stdin);
	freopen("sum.out","w",stdout);
	scanf("%d",&n);
	k=1;
	while(n)
	{
		scanf("%d",&x);
		printf("%lld\n",GetDivis(x));
		k++;
		n--;
	}
	return 0;
}