Cod sursa(job #3317674)

Utilizator TimofeiFilipTimofei Filip Emanuel TimofeiFilip Data 24 octombrie 2025 20:52:18
Problema Suma si numarul divizorilor Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.12 kb
#include <bits/stdc++.h>
using namespace std;

const int MOD = 9973;
const int NMAX = 1000000;

int nrdiv[NMAX + 1];
int sumdiv[NMAX + 1];

void ComputeSieveDivisors() {
    for (int i = 1; i <= NMAX; i++) {
        for (int j = i; j <= NMAX; j += i) {
            nrdiv[j]++;
            sumdiv[j] = (sumdiv[j] + i) % MOD;
        }
    }
}

int main() {
    freopen("ssnd.in", "r", stdin);
    freopen("ssnd.out", "w", stdout);

    int t;
    unsigned long long n;
    scanf("%d", &t);

    ComputeSieveDivisors();

    while (t--) {
        scanf("%llu", &n);
        if (n <= NMAX)
            printf("%d %d\n", nrdiv[n], sumdiv[n]);
        else {
            unsigned long long cnt = 0, s = 0;
            for (unsigned long long i = 1; i * i <= n; i++) {
                if (n % i == 0) {
                    if (i * i == n) {
                        cnt++;
                        s += i;
                    } else {
                        cnt += 2;
                        s += i + n / i;
                    }
                }
            }
            printf("%llu %llu\n", cnt % MOD, s % MOD);
        }
    }

    return 0;
}