Cod sursa(job #897343)

Utilizator adascaluAlexandru Dascalu adascalu Data 27 februarie 2013 20:04:00
Problema Sum Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 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;
}