Cod sursa(job #2797560)

Utilizator mariaionescu2006Ionescu Maria mariaionescu2006 Data 10 noiembrie 2021 09:20:21
Problema Suma si numarul divizorilor Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("ssnd.in");
ofstream fout ("ssnd.out");
bool c[1000001];
int d[1000001];
int t;
long long n,q,nr,s,x;
int main()
{
    c[0]=1;
    c[1]=1;
    for (int i=2;i*i<=1000000;i++)
        {if (c[i]==0) {nr++;
                       d[nr]=i;
                       for (int j=i*i;j<=1000000;j=j+i)
                            c[j]=1;}}
    fin >>t;
    for (int i=1;i<=t;i++)
        {fin >>n;
         q=1;s=1;nr=1;
         while (d[q]*d[q]<=n)
               {long long p=0,p1=1;
                while (n%d[q]==0)
                      {p++;
                       n=n/d[q];
                       p1=p1*d[q];}
                if (p>0) {nr=nr*(p+1);
                          s=s*(p1*d[q]-1)/(p1-1)%9973;}
                q++;}
         if (n>1) {nr=nr*2;
                   s=s*(n*n-1)/(n-1)%9973;}
         fout <<nr<<' '<<s<<'\n';}
    return 0;
}