Cod sursa(job #1832833)

Utilizator PinkiePie1189Preoteasa Mircea-Costin PinkiePie1189 Data 21 decembrie 2016 00:03:43
Problema Sum Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include<stdio.h>
#define MAXN 100000
#define MAXX 100000
inline void ciur(int limit);
FILE*fin,*fout;
int totient[MAXX];
int query[MAXN];
int main()
{
	fin=fopen("sum.in","r");
	fout=fopen("sum.out","w");
	int N;
	fscanf(fin,"%d",&N);
	int max=-1;
	for(int i=1;i<=N;i++)
	{
		fscanf(fin,"%d",&query[i]);
		if(query[i]>max)
		{
			max=query[i];
		}
	}
	ciur(max);
	for(int i=1;i<=N;i++)
	{
		fprintf(fout,"%d\n",2*totient[query[i]]*query[i]);
	}
	fclose(fin);
	fclose(fout);
	return 0;
}
inline void ciur(int limit)
{
	for(int i=1;i<=limit;i++)
	{
		totient[i]=i-1;
	}
	for(int i=2;i<=limit;i++)
	{
		for(int j=2*i;j<=limit;j+=i)
		{
			totient[j]-=totient[i];
		}
	}
}