Cod sursa(job #2354611)

Utilizator robertbirsanRobert Birsan robertbirsan Data 25 februarie 2019 13:36:12
Problema Suma si numarul divizorilor Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.03 kb
#include <bits/stdc++.h>
#define maxim 1000001
#define maxprim 78498
#define modulo 9973

using namespace std;

char ciur[maxim];
int v[maxprim];

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

int con,i,j,t,nrdiv,e;
long long sdiv,p,nr,d;

int main()
{
    f>>t;
    for(i=2;i*i<=maxim;i++)
        if(ciur[i]==0)
           for(j=i*i;j<=maxim;j=j+i)
               ciur[j]=1;

    con=0;
    for(i=2;i<=maxim;i++)
        if(ciur[i]==0)
           v[con++]=i;

    for(i=0;i<t;i++)
    {
        f>>nr;
        d=v[0];
        nrdiv=j=sdiv=1;
        while(d*d<=nr)
        {
            e=0;
            p=1;
            while(nr%d==0)
            {
                nr=nr/d;
                p=p*d;
                e++;
            }
            sdiv=sdiv*(p*d-1)/(d-1);
            nrdiv=nrdiv*(e+1);
            d=v[j++];
        }
        if(nr>1){
            nrdiv=nrdiv*2;
            sdiv=sdiv*(nr*nr-1)/(nr-1);
        }
        g<<nrdiv<<" "<<sdiv%modulo<<endl;
    }
    return 0;
}