Cod sursa(job #120583)

Utilizator FlorianFlorian Marcu Florian Data 5 ianuarie 2008 21:44:14
Problema Suma divizorilor Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.27 kb
#include<stdio.h>
#define mod 9901
FILE*f=fopen("sumdiv.in","r");
FILE*g=fopen("sumdiv.out","w");
long long a,b,P=1;
/*long putere(long a, long b)
        {
        long rez=1;
        while(b)
             {
              if(b%2==0) { a=(a*a)%mod; b=b/2; }
              else { rez=(rez*a)%mod; b--; }
             }
        return rez;
        }
*/
void solve()
        {
         long long i,r,sol,p;
         for(i=2;i*i<=a;++i)
             {
              for(r=0;a%i==0;++r,a=a/i);
              if(r)
                    {
                     sol=0; p=1;
                     for(long k=0;k<=b*r;++k)
                          {
                           sol=(sol+p)%mod;
                           p=(p*i)%mod;
                          }
                     P=(P*sol)%mod;
                    }
             }
        if(a>1)
             {
              sol=0; p=1;
              for(long k=0;k<=b;++k)
                          {
                           sol=(sol+p)%mod;
                           p=(p*a)%mod;
                          }
                     P=(P*sol)%mod;
              }

       fprintf(g,"%lld",P);
       }
int main()
       {
        fscanf(f,"%lld %lld",&a,&b);
      solve();
        return 0;
       }