Cod sursa(job #614532)

Utilizator Magnuscont cu nume gresit sau fals Magnus Data 6 octombrie 2011 19:28:16
Problema Suma divizorilor Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include<cstdio>

int main()
{
    long long i,j,a,b,sol=1,aux,aux2;
	freopen("sumdiv.in","r",stdin);
	freopen("sumdiv.out","w",stdout);
	scanf("%lld%lld",&a,&b);
	if (a%9901==0)
    {
        printf("0\n");
        return 0;
    }
    for (i=2;i*i<=a;++i)
        if (a%i==0)
        {
            aux=0;
            while (a%i==0)
            {
                ++aux;
                a/=i;
            }
            aux=((aux*b)+1)%9900;
            for (j=1,aux2=1;j<=aux;++j)
                aux2=(aux2*i)%9901;
            --aux2;
            if (aux2<0)
                aux2+=9901;
            sol=(sol*aux2)%9901;
            for (j=1;j<9900;++j)
                sol=(sol*(i-1))%9901;
        }
    if (a!=1)
    {
        i=a%9901;
        aux=(b+1)%9900;
        for (j=1,aux2=1;j<=aux;++j)
            aux2=(aux2*i)%9901;
        --aux2;
        if (aux2<0)
            aux2+=9901;
        sol=(sol*aux2)%9901;
        for (j=1;j<9900;++j)
            sol=(sol*(i-1))%9901;
    }
    printf("%lld\n",sol);
	return 0;
}