Cod sursa(job #120559)

Utilizator FlorianFlorian Marcu Florian Data 5 ianuarie 2008 21:20:34
Problema Suma divizorilor Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 kb
#include<stdio.h>
#define mod 9901
FILE*f=fopen("sumdiv.in","r");
FILE*g=fopen("sumdiv.out","w");
long a,b,s,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 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+=p;
                           p=p*i;
                          }
                     P=(P*sol)%mod;
                    }
             }
        if(a>1)
             {
              sol=0; p=1;
              for(long k=0;k<=b;++k)
                          {
                           sol+=p;
                           p=p*i;
                          }
                     P=(P*sol)%mod;
              }

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