Cod sursa(job #2500276)

Utilizator YetoAdrian Tonica Yeto Data 27 noiembrie 2019 17:32:24
Problema Suma si numarul divizorilor Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 kb
#include <fstream>
#define mod 9973
using namespace std;
bool ciur[1000005];
long long p[78500];
long long x, v, t, e, i, c, j, nr;
long long suma;
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;
        }
    }
    for (;t--;) {
        fin>>x;
        e=0;
        suma=1;
        nr=1;
        for (j=1;p[j]*p[j]<=x && x!=1;j++) {
            if (x%p[j]==0) {
                e=0;
                v=1;
                while (x%p[j]==0) {
                    e++;
                    v*=p[j];
                    x/=p[j];
                }
                suma*=((v*p[j]-1)/(p[j]-1));
                nr*=(e+1);
            }
        }
        if (x!=1) {
            nr*=2;
            suma*=((x*x-1)/(x-1));
        }
        
        fout<<nr<<" "<<suma%mod<<"\n";
    }
    
    return 0;
}