Cod sursa(job #3359286)

Utilizator gigeldannustiu gigeldan Data 26 iunie 2026 15:54:02
Problema Suma si numarul divizorilor Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.48 kb
#include <bits/stdc++.h>
using namespace std;
bool fol[1000005];
vector<int> prime;
void ciur() {
    for (int i = 2; i <= 1000000; i++) fol[i] = 1;
    for (int i = 2; i * i <= 1000000; i++) {
        if (fol[i]) {
            for (int j = i * i; j <= 1000000; j += i) {
                fol[j]=0;
            }
        }
    }
    for (int i = 2; i <= 1000000; i++) {
        if (fol[i]) prime.push_back(i);
    }
}
ifstream f("ssnd.in");
ofstream g("ssnd.out");
int main() {
    long long n[1005], nn = 0;
    f >> nn;
    for (int i = 1; i <= nn; i++) {
        f >> n[i];
    }
    ciur();
    for (int l = 1; l <= nn; l++) {
        long long nr = 1;
        long long suma = 1;
        long long temp = n[l];
        for (int p : prime) {
            if (1LL * p * p > temp) break;

            if (temp % p == 0) {
                int exp = 0;
                long long put = 1;
                long long suma_p = 1;

                while (temp % p == 0) {
                    exp++;
                    put = (put * p) % 9973;
                    suma_p = (suma_p + put) % 9973;
                    temp /= p;
                }

                nr = nr * (exp + 1);
                suma = (suma * suma_p) % 9973;
            }
        }

        if (temp > 1) {
            nr = nr * 2;
            suma = (suma * ((1 + temp) % 9973)) % 9973;
        }

        g << nr << ' ' << suma << '\n';
    }

    f.close();
    g.close();
    return 0;
}