Cod sursa(job #418405)

Utilizator irene_mFMI Irina Iancu irene_m Data 15 martie 2010 20:37:17
Problema Suma divizorilor Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <cstdio>
#include <cmath>
#define infile "sumdiv.in"
#define outfile "sumdiv.out"
#define MaxN 100000
#define MaxM 1000
#define MODULO 9901

bool a[MaxN];
long long A,B,p,r,K,val,S;

void read()
{
      scanf("%lld%lld",&A,&B);
}

void pw(long long &val,long long B)
{
      long long i,aux=val;
      for(i=1;i<=B;i++)
            val*=aux;
}

void solve()
{
      long long i,j;
      for(i=2;i*i<MaxN;i++)
            if(a[i]==false)
                  for(j=2;j*i<MaxN;j++)
                        a[i*j]=true;
      i=2; S=1;
      while(A>1)
      {
            while(a[i]==true)
                  i++;
            p=i; r=0; val=1;
            while(A%i==0)
            {
                  A/=i;
                  r++; val*=i;
            }
            pw(val,B);
            S*=(val-1)/(i-1);
            i++;
      }
}

void write()
{
      printf("%lld",S);
}

int main()
{
      freopen(infile,"r",stdin);
      freopen(outfile,"w",stdout);

      read();
      solve();
      write();

      fclose(stdin);
      fclose(stdout);
      return 0;
}