Cod sursa(job #1800477)

Utilizator pusi23Faier Andreea pusi23 Data 7 noiembrie 2016 20:03:59
Problema Suma si numarul divizorilor Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.2 kb
#include<fstream>
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
int t,i,j,c,d,nr;
long long n,x,s,y,prim[500000];
char ciur[1000001];
int main()
{
    f>>t;
    ciur[1]=1;
    for(i=2;i<=1000000;i++)
    {
        if(ciur[i]==0)
        {
            for(j=2*i;j<=1000000;j=j+i)
            {
                ciur[j]=1;
            }
        }
    }
    for(i=1;i<=1000000;i++)
    {
        if(ciur[i]==0)
        {
            c++;
            prim[c]=i;
        }
    }
    for(i=1;i<=t;i++)
    {
        f>>n;
        x=n;
        nr=1;
        s=1;
        for(j=1;prim[j]*prim[j]<=x;j++)
        {
            if(x%prim[j]==0)
            {
                d=0;
                y=prim[j];
                while(x%prim[j]==0)
                {
                    x=x/prim[j];
                    d++;
                    y=y*prim[j];
                }
                nr=nr*(d+1);
                s=s*(y-1)/(prim[j]-1);
                s=s%9973;
            }
        }
        if(x>1)
        {
            nr=nr*2;
            s=s*(x+1)%9973;
        }
        g<<nr<<" "<<s<<'\n';
    }
    f.close();
    g.close();
    return 0;
}