Cod sursa(job #900731)

Utilizator vladvaldezVlad Dimulescu vladvaldez Data 28 februarie 2013 21:30:30
Problema Suma divizorilor Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <stdio.h>
#include <math.h>

using namespace std;

FILE *f=fopen("sumdiv.in","r");
FILE *g=fopen("sumdiv.out","w");

int MOD=9901;
int v[500001],a,b,aa,i,sum,nr,j,p,k;

void ciur()
{
 int i;
 v[2]=1;
 for(i=3;i<=sqrt(a);i+=2)
  if (v[i]==1)
     for(j=i+i;j<=sqrt(a);j+=i)
      v[j]=0;
}


int main()
{


    fscanf(f,"%d %d",&a,&b);
    ciur();
   aa=a;
   sum=1;
    for(i=2;i<=sqrt(aa);i++)
    {
     if (v[i]==1)
     {
         p=0;
      while(aa%i==0){p++;aa=aa/i;}
      nr=p*b;
      k=1;
      for(j=1;j<=nr+1;j++)
       k=(k*i)%MOD;
       sum=sum*((k-1)/(i-1))%MOD;
     }

    }
if (aa!=1)
{
  nr=b;
  k=1;
  for(j=1;j<=nr+1;j++)
   k=(k*aa)%MOD;
   sum=sum*(k/aa-1)%MOD;
}



fprintf(g,"%d",sum);
    fclose(g);
    return 0;
}