Cod sursa(job #2812671)

Utilizator divadddDavid Curca divaddd Data 4 decembrie 2021 21:32:37
Problema Suma si numarul divizorilor Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include <fstream>
#include <iostream>
using namespace std;
int t;
long long n;

ifstream fin("ssnd.in");
ofstream fout("ssnd.out");

long long putere(long long a, long long b){
    long long ans = 1;
    for(int i = 1; i <= b; i++){
        ans *= a;
    }
    return ans;
}

void calcul(long long n){
    int nrdiv = 1;
    long long suma = 1;
    for(int d = 2; d*d <= n; d++){
        if(n%d == 0){
            int p = 0;
            while(n%d == 0){
                n /= d;
                p++;
            }
            /// d ^ p
            nrdiv *= (p+1);
            suma *= (putere(d, p+1)-1)/(d-1);
            suma %= 9973;
        }
    }
    if(n != 1){
        nrdiv *= 2;
        /// n ^ 1
        suma *= (putere(n, 2)-1)/(n-1);
        suma %= 9973;
    }
    fout << nrdiv << " " << suma << "\n";
}

int main()
{
    fin >> t;
    for(int i = 1; i <= t; i++){
        fin >> n;
        calcul(n);
    }
    return 0;
}