Cod sursa(job #613675)

Utilizator Magnuscont cu nume gresit sau fals Magnus Data 3 octombrie 2011 18:56:29
Problema Suma si numarul divizorilor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
#include<cstdio>

int b[1000001],v[100001];

int main()
{
    int i,j,n,aux,aux2,aux3,sol,sol2,t,cnt=0;
	freopen("ssnd.in","r",stdin);
	freopen("ssnd.out","w",stdout);
	for (i=2;i<1000;++i)
        if (!b[i])
        {
            for (j=2*i;j<=100000;j+=i)
                b[j]=1;
            ++cnt;
            v[cnt]=i;
        }
	scanf("%d",&t);
	for(;t;--t)
	{
	    sol=1;
	    sol2=1;
		scanf("%d",&n);
        for (i=1;i<=cnt&&v[i]*v[i]<=n;++i)
            if (n%v[i]==0)
            {
                aux=1;
                aux2=1;
                aux3=1;
                while (n%v[i]==0)
                {
                    aux=(aux*v[i])%9973;
                    aux2=(aux+aux2)%9973;
                    ++aux3;
                    n/=v[i];
                }
                sol=(sol*aux2)%9973;
                sol2=(sol*aux3)%9973;
            }
        if (n!=1)
            sol=(sol*(n+1))%9973;
        printf("%d",sol);
    }
	return 0;
}