Cod sursa(job #252728)

Utilizator cosmin79Carabet Cosmin Andrei cosmin79 Data 4 februarie 2009 21:06:42
Problema Suma divizorilor Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <stdio.h>
#define NR 9901
long long a,b,suma;
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,t,x=a;
	for (i=2; i*i<=a; i++)
	{
		if (a%i==0)
		{
			exp=0;
			t=a;
			while (t%i==0)
			{
				if (x%i==0)
					x/=i;
				t/=i;
				exp++;
			}
			suma+=(power(i,exp*b+1)-1)/(i-1)%NR;
		}
	}
	if (x!=1)
		suma+=(power(x,b+1)-1)/(x-1)%NR;
}	
int main()
{
	freopen("sumdiv.in","r",stdin);
	freopen("sumdiv.out","w",stdout);
	citire();
	rezolvare();
	printf("%lld",suma%NR);
	return 0;
}