Cod sursa(job #130909)

Utilizator oldcatanca popescu oldcat Data 2 februarie 2008 15:32:02
Problema Sum Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include<iostream.h>
#include<stdio.h>
#include<math.h>
int ciur[200003 ];
int main()
{ int i,i1, j,k, x,r, n;
  long s;
  //double r;
  freopen("sum.in", "rt", stdin);
  freopen("sum.out", "wt", stdout);
  cin>>n;
  for(i1=1;i1<=n;i1++)
  { cin>>x; s=1;
    r=sqrt(x);
    ciur[x]=ciur[2*x]=i1;
    if(x>2 && x%2==0) {for(i=2;i<2*x;i+=2) ciur[i]=i1;
		for(i=x/2;i<2*x;i+=x/2) ciur[i]=i1;
		}
    if(x>3 && x%3==0) {for(i=3;i<2*x;i+=3) ciur[i]=i1;
		for(i=x/3;i<2*x;i+=x/3) ciur[i]=i1;
	       }
    if(x>5&&x%5==0) {for(i=5;i<2*x;i+=5) ciur[i]=i1;
		for(i=x/5;i<2*x;i+=x/5) ciur[i]=i1;
		}
    for (k=1;(6*k+1)<=r ;k++)
    {if(x%(6*k+1)==0) {for(i=j=6*k+1;i<2*x;i+=j) ciur[i]=i1;
		       for(i=j=x/(6*k+1);i<2*x;i+=j) ciur[i]=i1;
		       }
     if(x%(6*k+5)==0) {for(i=j=6*k+5;i<2*x;i+=j) ciur[i]=i1;
		       for(i=j=x/(6*k+5);i<2*x;i+=j) ciur[i]=i1;
		       }
    }
    for(j=2;j <2*x;j++)
     if(ciur[j]!=i1) s+=j;
    cout<<s<<'\n';
  }
  return 0;
}