Cod sursa(job #97752)

Utilizator RobytzzaIonescu Robert Marius Robytzza Data 8 noiembrie 2007 16:26:11
Problema Sum Scor 35
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <fstream.h>
ifstream fin("sum.in");
ofstream fout("sum.out");
long n,x,sir[200001],sir1[200001];
long cmmdc(long a,long b){
   while (b){
      long r=a%b;
      a=b;
      b=r;}
return a;
}
void suma(){
long S=0;
for (long a=1;a<=2*x;a++){
   if (sir1[a]==1)
      S+=a;
   else
     if (sir1[a]==0){
    if (cmmdc(a,x)==1){
       S+=a;
       sir1[a+x]=1;}
      else
	sir1[a+x]=-1; }}
sir[x]=S;
fout<<S<<"\n";
memset(sir1,0,sizeof(sir1));
}
void citire(){
fin>>n;
for (long i=0;i<n;i++){
    fin>>x;
    if (sir[x]==0)
    suma();
    else
       fout<<sir[x]<<"\n";}
fin.close();
}
int main(){
citire();
fin.close();
fout.close();
return 0;
}