Cod sursa(job #634993)

Utilizator mlupseLupse-Turpan Mircea mlupse Data 18 noiembrie 2011 08:13:03
Problema Suma si numarul divizorilor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <fstream>
using namespace std;
const int MOD = 9973;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
int N=1000005, cnt=0;
char prim[1000005];
int p[1000005];
int main()
{
	long long n,t,i,j,nr,s,fact,e,f,m;

	for (i = 2; i <= N; ++i)
        prim[i] = 1;
    for (i = 2; i <= N; ++i)
        if (prim[i])
        {
            p[++cnt]=i;
            for (j = i+i; j <= N; j += i)
                prim[j] = 0;
        }

	fin>>t;
	for(i=1;i<=t;i++)
	{
		fin>>n;m=n;
		f=1;  nr=1;s=1;
		while(n!=1&&f<=N)
			{
			if(n%p[f]==0)
				{
				e=0;fact=p[f]%MOD;
				while(n%p[f]==0)
					{
					n=n/p[f];
					e++;
					fact=(fact*(p[f]%MOD))%MOD;
					}
			 
				s=s*(fact-1)%MOD;
				s=s/(p[f]%MOD-1);
				nr=nr*(e+1);
				}
			f++;
			}

		if(n!=1)
		{
			nr=nr*2;
			s=(s*(n+1))%MOD;
			}
		fout<<nr<<" "<<s<<"\n";
	}
}