Cod sursa(job #804357)

Utilizator raulstoinStoin Raul raulstoin Data 29 octombrie 2012 18:01:17
Problema Suma si numarul divizorilor Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include<cstdio>
#define lmax 1000005
using namespace std;
int prime[lmax];
bool use[lmax];
int main()
{
	int i,n,l=0;
	long long x;
	for(i=2;i<lmax;i++)
		if(!use[i])
		{
			prime[l++]=i;
			for(int j=i+i;j<lmax;j+=i)
				use[j]=1;
		}
	freopen("ssnd.in","r",stdin);
	freopen("ssnd.out","w",stdout);
	scanf("%d",&n);
	while(n--)
	{
		scanf("%lld",&x);
		int nr=1,s=1;
		for(i=0;i<l && prime[i]<=x;i++)
		    if(x%prime[i]==0)
		    {
                long long aux=x;
                int k=0;
                while(x%prime[i]==0)
                {
                    k++;
                    x/=prime[i];
                }

                aux/=x;
                aux*=prime[i];
                aux--;
                s=(s*(aux/(prime[i]-1)))%9973;
                nr*=k+1;
		    }
		printf("%d %d\n",nr,s);
	}
	return 0;
}