Cod sursa(job #1179785)
Utilizator | Visan Tudor Cosmin VisanCosmin | Data | 29 aprilie 2014 12:04:47 |
---|---|---|---|
Problema | Sum | Scor | 60 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.6 kb |
#include <stdio.h>
using namespace std;
FILE*f=fopen("sum.in","r");
FILE*g=fopen("sum.out","w");
unsigned long i,phi[100000],n[10000],max,j,t;
int main()
{
fscanf(f,"%d",&t);
for(i=1;i<=t;i++)
{
fscanf(f,"%lu",&n[i]);
if(n[i]>max) max=n[i];
}
for(i=1;i<=max+1;i++)
phi[i]=i-1;
for(i=2;i<=max;i++)
for(j=2*i;j<=max;j+=i)
phi[j]-=phi[i];
for(i=1;i<=t;i++)
if(n[i]==1) fprintf(g,"1\n");
else fprintf(g,"%lu\n",2*n[i]*(long long)phi [n[i] ]);
fclose(f);
fclose(g);
return 0;
}