Cod sursa(job #615426)

Utilizator UgleaEduFMI - Edward UgleaEdu Data 9 octombrie 2011 18:21:30
Problema Sum Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <iostream>
#include <fstream>
using namespace std;
int i = 1 , divizori[10000];
long long int ciur[100100];
void init(int n , int m)
{
 int j ;
 for(j = 0 ; j < n ; j++)
  divizori[j]=-1;
 for(j = 1 ; j <= m ; j++)
  ciur[j]=j; 
}          
void desc (int n)
{    
 int d ;
 i = 1;
 for( d = 2 ; d <= n/2 ; d++ )
  if( n % d == 0 && divizori[i - 1] != d )
   {
    divizori[i] = d;       
    i++;
   }
 divizori[i] = n;  
}
int main ()
{
 long int n , x;
 long long int s , v[100100] ;
 int p , j;
 fstream f("sum.in",ios::in);
 fstream g("sum.out",ios::out);
 f>>n;
 for( p = 1 ; p < n+1 ; p++ )
 {
  f>>v[p];    
  s = 0;    
  x = v[p];
  init( 100 , 2*x );
  desc(x);
  for( i = 1 ; divizori[i] != -1 ; i++)
   for( j = 1 ; j <= (2*x)/divizori[i] ;j++)
    ciur[j *divizori[i] ]= -1;
  for( j = 1 ; j < 2*x ; j++ )
   if(ciur[j] != -1 )
    s += ciur[j];
  g<<s<<'\n';
 }    
    return 0;
    
}