Cod sursa(job #1919042)

Utilizator Alexandru_StoianStoian Sorin Alexandru Alexandru_Stoian Data 9 martie 2017 17:45:39
Problema Suma si numarul divizorilor Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.13 kb
#include <fstream>
#include <iostream>
#include <vector>
#define maxv 1000005
#include <algorithm>

using namespace std;

ifstream f ("ssnd.in");
ofstream g ("ssnd.out");

int n, i, v[ 1001 ], d, x, e, nr, a, sol, j, s, p,q;
bool ciur[ maxv ];
int main() {
    ciur [ 1 ] = 1;
    ciur [ 0 ] = 1;
    for ( d = 2; d * d <= maxv; ++d ){
        if ( ciur[d]==0 )
            for ( i = d * d; i <= maxv; i = i + d )
                ciur[i] = 1;
    }
    f >> n;
    for ( i = 1; i <= n; ++i ){
        f >> x;
        nr = 1;
        s = 1;
        d = 2;
        while( d * d <= x ){
            e = 0;
            while ( x % d == 0 ){
                x = x / d;
                e++;
            }
            nr = nr * ( e + 1 );
            q = d;
            while ( e > 0 ){
                e--;
                q = q * d;
            }
            s = s * ( ( q - 1 ) / ( d - 1 ) );
            d++;
        }
        cout << x << ' ';
        if ( x > 1 ){
            nr = nr * 2;
            s = s * ( ( x * x - 1 ) / ( x - 1 ) );
        }
        g << nr << " " << s << '\n';
    }
    return 0;
}