Cod sursa(job #141434)

Utilizator anna_bozianuBozianu Ana anna_bozianu Data 23 februarie 2008 11:40:35
Problema Suma divizorilor Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include<stdio.h>
long long int a,b,sol,i,nf,e,expo[12],fact[12],p,sc,t,j,prim[7074];
void factorizare();
int main()
{
	FILE *f,*g;f=fopen("sumdiv.in","r");g=fopen("sumdiv.out","w");
	fscanf(f,"%lld%lld",&a,&b);b%=9900;
	factorizare();
	sol=1;
	for(i=1;i<=nf;i++)
	{ sc=0;
	  p=fact[i];
	  e=expo[i];
	  t=1;
	  for(j=0;j<=e;j++)
	  {sc=(sc+t)%9901;
	   t=(t*p)%9901;
	  }
	  sol=(sol*sc)%9901;
	}
	fprintf(g,"%lld\n",sol);
	fcloseall();
	return 0;
}
void factorizare()
{
	for(i=2;i<=7072;i++)
	{ if(!prim[i])
	  { if(a%i==0)
	    {nf++;
	     fact[nf]=i;
	     while(a%i==0)
	     {expo[nf]++;a/=i;}
	     expo[nf]=(expo[nf]*b)%9900;
	    }
	    for(j=2*i;j<=7072;j=j+i)prim[j]=1;
	  }
	}
	if(a>1){nf++;fact[nf]=a%9901;expo[nf]=b%9900;}
}