Cod sursa(job #1668996)

Utilizator NicolaalexandraNicola Alexandra Mihaela Nicolaalexandra Data 30 martie 2016 11:30:50
Problema Sum Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.48 kb
#include <fstream>

#include <bitset>

#include <cstdio>

using namespace std;

int x,i,sum,n,j,s,t,a,b,r,f[200011];

bitset <100010> v;

FILE  *fin = fopen ("sum.in", "r");

FILE  *fout = fopen ("sum.out", "w");

//ifstream fin ("sum.in");

//ofstream fout ("sum.out");

int main (){

    //fin>>n;

    /*for (t=1;t<=n;t++){
        fin>>x;
        sum = 0;
        for (i=1;i<=2*x;i++){
            a = i;
            b = x;
            while (b!=0){
                r = a%b;
                a = b;
                b = r;
            }
            if (a == 1)
                sum+=i;
        }
        fout<<sum<<"\n";
    }
*/


    // indicatorul lui euler;

    for (i=1;i<=100000;i++)
        f[i] = i;

    for (i=2;i<=100000;i++)
        if (v[i] == 0)
            for (j=i;j<=100000;j+=i){
                f[j] = 1LL*f[j]/i*(i-1);
                v[j] = 1;
            }

    fscanf (fin, "%d", &n);
    for (t=1;t<=n;t++){
        //fin>>x;
        fscanf (fin, "%d", &x);
        /*for (i=1;i<=2*x;i++)
            f[i] = i;
        for (i=2;i<=2*x;i++)
            if (f[i] == i)
                for (j=i;j<=2*x;j+=i)
                    f[j] = f[j]/i*(i-1);
        s = 0;
        //for (i=1;i<=2*x;i++)
          //  fout<<f[i]<<" ";
        fout<<2*f[x]*1LL*x;
        fout<<"\n";
        */
        fprintf (fout, "%lld\n",f[x]*2*x*1LL);
        //fout<<f[x]*2*x*1LL;
        //fout<<"\n";
    }



    return 0;
}