Cod sursa(job #181196)

Utilizator firewizardLucian Dobre firewizard Data 17 aprilie 2008 23:47:54
Problema Suma divizorilor Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <stdio.h>
#include <math.h>
unsigned long a,b,i,c,nr,sq;
unsigned long long p=1;
void factorizare(unsigned long long,unsigned long long);
int main()
{
    freopen ("sumdiv.in","r",stdin);
    freopen ("sumdiv.out","w",stdout);
    
    scanf("%ld %ld",&a,&b);nr=a;
    sq=sqrt(a);
    for (i=2;i<=sq+1;i++)
        if (nr%i==0){
           while (nr%i==0){
                 c++;nr/=i;
                 }
           c*=b;
           factorizare(i,c);
           c=0;
        }
    if(nr%(a/2)==0)factorizare(a/2,1);
    if(p==1)factorizare(a,1);
        
    printf("%lld",p);
    return 0;
}
void factorizare(unsigned long long nrp,unsigned long long exp)
{
     unsigned long long val=1,k=1;
     unsigned long long s=1;
     while(k<=exp)
     {s+=nrp*val;val*=nrp;k++;}
     p=(p*s)%9901;
}