Cod sursa(job #2387731)

Utilizator albucristianAlbu Cristian-Gabriel albucristian Data 25 martie 2019 10:08:45
Problema Suma si numarul divizorilor Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.21 kb
#include <fstream>

#include <cmath>

using namespace std;

int v[1000002],ciur[1000002];

int main()

{

    int n,c,s,nr,x,a;

    ifstream in("ssnd.in");

    ofstream out("ssnd.out");

    for(int i=2;i<=1000000;i++)

    {

        if(v[i]==0)

        {

            for(int j=2*i;j<=1000000;j+=i)

            {

                v[j]=1;

            }

        }

    }

    c=0;

    for(int i=2;i<=1000000;i++)

    {

        if(v[i]==0)

            ciur[++c]=i;

    }

    in>>n;

    for(int i=1;i<=n;i++)

    {

        in>>x;

        if(v[x]==1)

        {

            int y=x;

            nr=s=1;

            for(int j=1;j<=c;j++)

            {

                if(ciur[j]*ciur[j]<=y)

                {

                    a=0;

                    while(x%ciur[j]==0)

                    {

                        x/=ciur[j];

                        a++;

                    }

                    nr=nr*(a+1);

                    s=s*((pow(ciur[j],a+1)-1)/(ciur[j]-1));
                    s%=9973;

                }

                else

                    break;

            }

            out<<nr<<" "<<s<<"\n";

        }

        else

            out<<2<<" "<<x+1<<"\n";

    }

    return 0;

}