Cod sursa(job #1389521)

Utilizator alexburdescuBurdescu Alexandru alexburdescu Data 16 martie 2015 12:50:43
Problema Suma si numarul divizorilor Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 1.17 kb
#include<fstream>
using namespace std;
int t,k,i,j,v,c;
char ciur[1000001];
int a[1000001];
long long n,s,p,x,d,y;
int main ()
{
    ifstream fin("ssnd.in");
    ofstream fout("ssnd.out");
    fin>>t;
    v=0;
    for(i=2;i<=1000;i++)
    {
        if(ciur[i]==0)
        {
            for(j=i*i;j<=1000000;j=j+i)
            {
                ciur[j]=1;
            }
            v++;
            a[v]=i;
        }
    }
    ciur[1]=1;
    for(k=1;k<=t;k++)
    {
        fin>>n;
        s=1;
        p=1;
        x=n;
        d=2;
        v=1;
        while(d*d<=x)
        {
            y=1;
            c=0;
            while(x%d==0)
                  {
                      y=y*d;
                      c++;
                      x=x/d;
                  }
            if(c!=0)
                 {
                 p=p*(c+1)%9973;
                 s=s*(((y*d-1)/(d-1))%9973)%9973;
                 }
            v++;
            d=a[v];
        }
        if(x!=1)
        {
            p=p*2%9973;
            s=s*((x+1)%9973)%9973;
        }
        fout<<p<<" "<<s<<"\n";
    }
    fin.close();
    fout.close();
    return 0;
}