Cod sursa(job #785009)

Utilizator adascaluAlexandru Dascalu adascalu Data 7 septembrie 2012 16:31:12
Problema Sum Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
using namespace std;
#include<fstream>
#include<vector>
#include<algorithm>
#define dmax 100010
vector<int>phi(2*dmax);
void calc_phi(int n);
int main ()
{
	int i,n,max=-1;
	vector<int>v(dmax);
	ifstream f("sum.in");
	f>>n;
	long long sum;
	for(i=1;i<=n;i++)
		{
		f>>v[i];
		max=max<v[i] ?v[i]:max;
		}
	calc_phi(max*2);
	ofstream g("sum.out");
	for(i=1;i<=n;i++)
	{
		sum=(long long)phi[v[i]]*(long long)v[i]*2;
		g<<sum<<"\n";
	}		
	f.close();
	g.close();
	return 0;
}
void calc_phi (int n)
{
	phi[1]=1;int i,j;
	for(i=2;i<=n;i++)
		phi[i]=i;
	for(i=2;i<=n;i++)
		if(phi[i]==i)
		for(j=i;j<=n;j+=i)
			phi[j]*=(i-1),phi[j]/=i;
}