Cod sursa(job #2500158)

Utilizator YetoAdrian Tonica Yeto Data 27 noiembrie 2019 12:24:07
Problema Suma si numarul divizorilor Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.02 kb
#include <fstream>
#define mod 9973
using namespace std;
bool ciur[1000005];
int p[150000];
int x, i, t, j, c, nr, v;
int suma, e;
ifstream fin ("ssnd.in");
ofstream fout ("ssnd.out");

int main () {
    fin>>t;
    for (i=2;i<=1000000;i++) {
        if (ciur[i]==0) {
            p[++c]=i;
            for (j=i+i;j<=1000000;j+=i)
                ciur[j]=1;
        }
    }
    ///p contine toate numerele prime pana la 10^6
    for (;t--;) {
        nr=1;
        e=0;
        v=1;
        suma=1;
        fin>>x;
        for (j=1;p[j]<=x/p[j] && x!=1; j++) {
            if (x%p[j]==0) {
                e=0;v=1;
                while(x%p[j]==0) {
                    e++;
                    v*=p[j];
                    x/=p[j];
                }
            }
            nr*=(e+1);
            suma*=((v*p[j]-1)/(p[j]-1));
            suma%=mod;
        }
        if (x!=1) {
            nr*=2;
            suma*=((x*x-1)/(x-1));
            suma%=mod;
        }
        fout<<nr<<" "<<suma%mod<<"\n";
    }
    
    
    return 0;
}