Cod sursa(job #1240244)

Utilizator ducu34Albastroiu Radu Gabriel ducu34 Data 10 octombrie 2014 21:22:19
Problema Suma si numarul divizorilor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.19 kb
#include<fstream>
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
long long mare=1000001,i,j,suma,viz[1000001],numar,t,n,p,geometrica,m,x,OK,k,X[100001];
int main()
{
    fin>>t;
    for(i=2;i<=mare;i++)
    {
        if(viz[i]==0)
        {
            for(j=2;i*j<=mare;j++)
                viz[i*j]=1;
			X[++k]=i;
        }
    }
    for(i=1;i<=t;i++)
    {
        fin>>n;
        x=n;
        numar=suma=1;OK=1;
            for(j=1;X[j]*X[j]<=n && j<=k;j++)
            {
				if(x%X[j]==0)
				{
                    p=0;
                    while(x%X[j]==0)
                    {
                        x=x/X[j];
                        p++;
                    }
                    geometrica=1;
                    numar=numar*(p+1)%9973;
                    for(m=1;m<=p+1;m++)
                        geometrica=geometrica*X[j];
                    geometrica--;
                    geometrica=geometrica/(X[j]-1)%9973;
                    suma=suma*geometrica%9973;
				}
            }
        if(viz[n]==0)
        {
            numar=2;
            suma=1+n;
        }
        fout<<numar<<" "<<suma<<"\n";
    }
    return 0;
}