Cod sursa(job #2136267)

Utilizator AlexutAlex Calinescu Alexut Data 19 februarie 2018 19:59:54
Problema Suma si numarul divizorilor Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.14 kb
#include<fstream>
using namespace std;
int t,k,v,c;
char ciur[1000009];
int a[100001];
long long n,s,p,x,d,y,i,j;
int main ()
{
    ifstream cin("ssnd.in");
    ofstream cout("ssnd.out");
    cin>>t;
    v=0;
    for(i=2;i<=1000000;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++)
    {
        cin>>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;
        }
        cout<<p<<" "<<s<<"\n";
    }

    return 0;
}