Cod sursa(job #730551)

Utilizator an_drey_curentandreycurent an_drey_curent Data 6 aprilie 2012 14:53:52
Problema Fractii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include<stdio.h>
#define NMAX 1000005
int k,N,primi[10],SOL[NMAX];
void citire()
{
	freopen("fractii.in","r",stdin);
	freopen("fractii.out","w",stdout);
	scanf("%d",&N);
}
void descompunere(int x)
{
	int i;k = 0;
	for(i = 2;  x!=1; i++)
	{
		if(x%i==0)
		{
			for(;x%i==0;x/=i);
			primi[++k] = i;
		}
	}
}
void euler()
{
	SOL[1] = 1, SOL[2] = 1;
	for(int i = 3 ; i <= N; i++)
	{
		descompunere(i);
		double e = i*1.0;
		for(int j = 1 ; j <= k ; j++)
			e*=1-(1.0/primi[j]);
		SOL[i] = (int)e;
	}

}
void construire()
{
	for(int i = 2 ; i <= N; i++)
		SOL[i] = SOL[i-1] + (2*SOL[i]);
}
int main()
{
	citire();
	euler();
	construire();
	printf("%d",SOL[N]);
	return 0;
}