Cod sursa(job #1240044)

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