Cod sursa(job #252925)

Utilizator cosmin79Carabet Cosmin Andrei cosmin79 Data 5 februarie 2009 08:29:27
Problema Suma divizorilor Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <stdio.h>
#define NR 9901
long long a,b,suma=1;
void citire()
{
	scanf("%lld%lld",&a,&b);
}
int power(long long n,long long p)
{
	long long s=1;
	n=n%NR;   
    while(p)   
    {   
        if (p%2)   
            s=s*n%NR;   
        n=n*n%NR;   
        p/=2;   
    }  	
	return s;
}
void rezolvare()
{
	long long i,exp;
	for (i=2; i*i<=a; i++)
	{
		if (a%i==0)
		{
			exp=0;
			while (a%i==0)
			{
				a/=i;
				exp++;
			}
			suma*=(power(i,exp*b+1)-1)/(i-1)%NR;
		}
	}
	if (a!=1)
		suma*=(power(a,b+1)-1)/(a-1);
}	
int main()
{
	freopen("sumdiv.in","r",stdin);
	freopen("sumdiv.out","w",stdout);
	citire();
	rezolvare();
	printf("%lld",suma%NR);
	return 0;
}