Cod sursa(job #2215802)

Utilizator bojemoiRadu Mamaliga bojemoi Data 23 iunie 2018 17:40:24
Problema Suma si numarul divizorilor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.09 kb
#include <fstream>
#include <cmath>
#define imp 9973
using namespace std;

ifstream cin("ssnd.in");
ofstream cout("ssnd.out");

bool p[100000];
long prim[10000], n;
int k = 0, t;
void eratostene(){
    for(int i = 2; i<=10000; ++i){
        if(!p[i]){
            prim[++k] = i;
            for(int j = 2*i; j<=100000; j+=i){
                p[j] = true;
            }
        }
    }
}



int main()
{
    eratostene();

    cin>>t;
    while(t--){
        cin>>n;
        int b[10000], e[10000], i = 1, j = 0;
        for(int i = 1; i<=10000; ++i){
            b[i] = e[i] = 0;
        }
        while(n!=1){
            if(n%prim[i]==0){
                b[++j] = prim[i];
                while(n%prim[i]==0){
                    e[j]++;
                    n/=prim[i];
                }
            }
            i++;
        }
        long nr = 1, sum = 1;

        for(int w = 1; w<=j; ++w){
                nr*=e[w]+1;
                sum*=(pow(b[w],e[w]+1) - 1)/(b[w]-1);
        }

        cout<<nr<<' '<<sum%9973<<'\n';
    }




    return 0;
}