Cod sursa(job #1007841)

Utilizator NacuCristianCristian Nacu NacuCristian Data 9 octombrie 2013 20:00:57
Problema Suma si numarul divizorilor Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1.29 kb
#include <iostream>
#include <fstream>
#include <string.h>

using namespace std;

int t;
long long int n,ps=1,pd=1,s=1,d=1;
const int mod=9973;
bool a[1000001];
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");

void citire()
{
    fin>>n;
}



void ciur()
{
    for(int i=2; i<=1000001; i++)
    {
        if(a[i]==0)
        {
            for(int j=i*2; j<=1000001; j+=i)
            {
                a[j]=1;
            }
        }
    }
}


void div()
{


    for(int i=2; i*i<=n; i++)
    {
        if(a[i]==0)
        {
            if(n%i==0)
            {
                int exp=1;
                ps=i,pd=1;

                while(n%i==0)
                {
                    exp++;
                    ps*=i;
                    n/=i;
                }
                pd*=exp;
                ps=((ps-1)/(i-1))%mod;

                    s*=ps;
                    d*=pd;


            }
        }

    ps=1,pd=1;

    }
        if(n>1)
    {
        ps*=((n*n-1)/(n-1))%mod;
        pd*=2;
    }
    s*=ps;
    d*=pd;

}



   int main()
{

    ciur();

    fin>>t;
    for(int i=0; i<t; i++)
    {
        citire();
        div();
        fout<<d<<" "<<s%mod<<"\n";
        s=1;d=1;


    }



    return 0;
}