Cod sursa(job #756751)

Utilizator harababurelPuscas Sergiu harababurel Data 10 iunie 2012 13:35:07
Problema Sum Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <iostream>
#include <fstream>
using namespace std;

int main() {
	ifstream f("sum.in");
	ofstream g("sum.out");
	
	long long n=0, i, j, t, phi[100005], x[100005];
	long long s;
	
	f>>t;
	for(i=1; i<=t; i++) {
		f>>x[i];
		if(x[i]>n) n=x[i];	//n = max(x[i])
	}
	
	n*=2;	//n = 2*max(x[i]) -> pana unde calculez functia phi()
	n++;
	
	for(i=1; i<=n; i++) phi[i] = i-1;	//indicatorul lui euler (phi[i] = nr de numere prime cu i, mai mici decat i)
	for(i=2; i<=n; i++) {				//initializez cu i-1, si din toti multiplii lui i scad phi[i]
		for(j=2*i; j<=n; j+=i) {
			phi[j] -= phi[i];
		}
	}
	
	for(i=1; i<=t; i++) {
		g<<phi[x[i]]*2*x[i]<<"\n";		//ceva formula dedusa
	}
	
	
	f.close();
	g.close();
	return 0;
}