Cod sursa(job #3275746)

Utilizator pkseVlad Bondoc pkse Data 11 februarie 2025 18:17:32
Problema Suma si numarul divizorilor Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.04 kb
#include <iostream>
#include <vector>
#include <cmath>
using namespace std;

int ciur[1000005];
vector<int> prime;

void makeciur() {
    for(int i = 2; i * i <= 1000000; i ++) {
        if(ciur[i])
            continue;
        prime.push_back(i);
        for(int j = i * i; j <= 1000000; j += i) {
            ciur[j] = 1;
        }
    }
}

int main() {
    freopen("ssnd.in", "r", stdin);
    freopen("ssnd.out", "w", stdout);
    makeciur();
    int t; cin >> t;
    while(t --) {
        long long n; cin >> n;
        long long nrdiv = 1, sumdiv = 1;
        for(auto i : prime) {
            if(1ll * i * i > n)
                break;
            long long e = 0, sum = 1, putere = 1;
            while(n % i == 0) {
                e ++;
                n /= i;
                putere *= i;
                sum += putere;
            }
            nrdiv *= (e + 1);
            sumdiv *= sum;
        }
        if(n > 1) {
            nrdiv *= 2;
            sumdiv *= (1 + n);
        }
        cout << nrdiv % 9973 << ' ' << sumdiv % 9973 <<  '\n';
    }
}