Cod sursa(job #416915)

Utilizator biroBiro Alexandru biro Data 13 martie 2010 17:58:10
Problema Fractii Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <algorithm>
#define input "fractii.in"
#define output "fractii.out"
#define DIM 500000

using namespace std;

int ciur[DIM] ;
int n ;
long long s ;
void read()
    {
       scanf ("%d" , &n) ; 
    }
void solve()
    {
        for (int i=2 ; i<=n ; i++)
            {
                if (!ciur[i])
                    {
                        s+=i-1 ;
                        for (int j=i+i ; j<=n ; j+=i)
                            {
                                if (!ciur[j])
                                    {
                                        ciur[j]=j-j/i ;
                                    }
                                else
                                    {
                                        ciur[j]-=ciur[j]/i ;       
                                    }    
                            }                  
                    }
                else
                    {
                        s+=ciur[i] ;    
                    }    
            }       
        printf ("%lld" , s*2+1 ) ; 
    }
int main()
{
    freopen (input,"r",stdin) ;
    freopen (output,"w",stdout) ;
    
    read() ;
    solve() ;

    return 0;        
}