Cod sursa(job #64378)
| Utilizator | Data | 2 iunie 2007 23:14:51 | |
|---|---|---|---|
| Problema | Fractii | Scor | 30 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.52 kb |
#include <stdio.h>
void desc(long long &n, long long &d, long long &p)
{
d=2, p=0;
while (n>1)
{
while (n%d==0)
n/=d, ++p;
if (p) break ;
d++;
}
}
int main()
{
long long n, nr=1, tot[1000005]={0, 1}, i, ci, d, p;
FILE *f=fopen("fractii.in", "r"), *g=fopen("fractii.out", "w");
fscanf (f, "%lld", &n);
fclose(f);
for (i=2; i<=n; ++i)
{
ci=i;
desc(ci, d, p);
tot[i]=(d-1)*( (i/ci)/d )*tot[ci];
nr+=2*tot[i];
}
fprintf (g, "%lld\n", nr);
fclose(g);
return 0;
}
