Cod sursa(job #2528996)

Utilizator Tudor06MusatTudor Tudor06 Data 22 ianuarie 2020 20:30:05
Problema Suma si numarul divizorilor Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include <iostream>
#include <fstream>

using namespace std;

const int MOD = 9973;

void raspuns( int *suma, int *div, long long a ) {
    int power, d;
    long long prod;
    d = 2;
    while ( d * d <= a ) {
        power = 0;
        prod = 1;
        while ( a % d == 0 ) {
            prod *= d;
            a /= d;
            power ++;
        }
        *div *= ( power + 1 );
        if ( prod != 1 ) {
            *suma *= ( prod * d - 1 ) / ( d - 1 ) % MOD;
        }
        *suma %= MOD;
        d ++;
    }
    if ( a > 1 ) {
        *div *= 2;
        *suma *= ( a * a - 1 ) / ( a - 1 ) % MOD;
        *suma %= MOD;
    }
}
int main() {
    ifstream fin( "ssnd.in" );
    ofstream fout( "ssnd.out" );
    int t, i, suma, div;
    long long n;
    fin >> t;
    for ( i = 0; i < t; i ++ ) {
        fin >> n;
        suma = div = 1;
        raspuns( &suma, &div, n );
        fout << div << ' ' << suma << '\n';
    }
    return 0;
}