Cod sursa(job #3256711)

Utilizator raduiliIliusco Radu raduili Data 15 noiembrie 2024 20:08:14
Problema Suma si numarul divizorilor Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <iostream>
#include <fstream>
#include <math.h>
using namespace std;

#define LL long long
#define MOD 9973

ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
int nrdiv;
LL sdivfinal;

void solve(LL x) {
    LL d = 2;
    nrdiv = 1;
    LL sdiv1 = 1, sdiv2 = 1;

    // scot factorii primi lui x
    while (x > 1) {
        int e = 0;
        while (x % d == 0) {
            e++;
            x /= d;
        }
        if (e) {
            nrdiv *= e + 1;
            sdiv1 *= (LL)pow(d, e+1) - 1;
            sdiv2 *= d - 1;
        }
        d++;
    }
    sdivfinal = (sdiv1 / sdiv2) % MOD;
}

int main() {
    int t;
    fin >> t;

    LL x;
    for (int i = 0; i < t; i++) {
        fin >> x;
        cout << x << ": ";
        solve(x);
        cout << nrdiv << " " << sdivfinal << endl;
        fout << nrdiv << " " << sdivfinal << endl;
    }

    return 0;
}