Cod sursa(job #2373871)

Utilizator AndreiD31Dragan Andrei AndreiD31 Data 7 martie 2019 15:35:14
Problema Suma si numarul divizorilor Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <bits/stdc++.h>
#define mod 9973
using namespace std;


ifstream f("ssnd.in");
ofstream g("ssnd.out");



long long n,i,d,x,p,t,putere,nr_div,rez,v[100100];
bool ciur[1000010];


int main()
{

    for(d=2;d<=1000000;d++)
    {
        if(ciur[d]==0)
        {
            n++;
            v[n]=d;

            for(i=d*d;i<=1000000;i=i+d)
                ciur[i]=1;
        }
    }





    f>>t;
    for(int pas=1;pas<=t;pas++)
    {
        f>>x;
        i=1;

        nr_div=1;
        rez=1;

        while(v[i]*v[i]<=x)
        {
            p=0;
            putere=1;

            while(x%v[i]==0){p++;x=x/v[i];putere=putere*v[i];}

            nr_div=nr_div*(p+1);
            rez*=((putere*v[i]-1)/(v[i]-1))%mod;

            i++;
        }

        if(x!=1)
        {
            nr_div=nr_div*2;
            rez*=(x+1);
        }

        g<<nr_div<<" "<<rez%mod<<'\n';


    }
    return 0;
}