Cod sursa(job #378927)

Utilizator miculprogramatorA Cosmina - vechi miculprogramator Data 29 decembrie 2009 23:21:12
Problema Sum Scor 70
Compilator c Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <stdio.h>

#define MAX 100007

int  ciur[MAX],x;
int i, j, k, n;
long long sum;

void gen()
{
	for (i=1; i<=MAX; ++i)
		ciur[i] = i-1;
    for (i=2; i<=MAX; ++i)
      for (j=2*i; j<=MAX; j+=i)
		  ciur[j] -= ciur[i];
}

int main()
{
	FILE *f = fopen ("sum.in","r");
	FILE *g = fopen ("sum.out","w");
	fscanf (f,"%d", &n);
	
	/*for (i=1; i<=MAX; ++i)
		ciur[i] = 1;
	for (i=2; i*i<=MAX; ++i)
		if (ciur[i])
			for (j=2; i * j < MAX; ++j)
				ciur[i*j] = 0;*/
	
	gen();
	  
	for (i=1; i<=n; ++i)
	{
		fscanf (f,"%d", &x);
		sum = ciur[x] * x * 2;
		fprintf (g,"%lld\n", sum);
	}
	
	fclose(g);
	fclose(f);
	return 0;
}


/*for (i=0; i<n; ++i)
	{
		sum = 0;
		fscanf (f,"%d", &x);
		j = 1;
		while (j >= 0 && j <= 2 * x)
		{
			if (cmmdc(x, j) == 1)
				sum += j;
			j ++;
		}
		fprintf (g,"%d\n", sum);
	}*/