Cod sursa(job #1237756)

Utilizator delia_99Delia Draghici delia_99 Data 4 octombrie 2014 19:28:34
Problema Suma si numarul divizorilor Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include <fstream>

using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
int t,i,p,m,j,d[500000];
long long s,n,n2,fct,nr;
bool prim[1000005];
void ciur()
{
    long long i,j;
    m=0;
    for(i=2; i<=1000000; i++)
        if(!prim[i])
        {
            d[++m]=i;
            for(j= i * i; j<=1000000; j+=i)

                prim[j]=true;
        }
    return;


}

int main()
{
    f>>t;
    ciur();
    for(i=1; i<=t; i++)
    {
        f>>n;
        s=1;
        nr=1;
        j=1;
        n2=n;
        while(n>1&&j<=m)
        {
            p=0;
            fct=d[j];
            while(n%d[j]==0)
            {
                p++;
                fct*=d[j];
                n/=d[j];
            }
            nr*=(p+1);
            if (p>0) s*=(fct-1)/(d[j]-1);
            s=s%9973;
            j++;
        }
        if(nr==1)
          {
              nr=2;
              s=(1+n2)%9973;
          }
        g<<nr<<" "<<s<<'\n';
    }

    return 0;
}