Cod sursa(job #2256131)

Utilizator rnqftwcalina florin daniel rnqftw Data 7 octombrie 2018 23:59:34
Problema Suma si numarul divizorilor Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.1 kb
#include<bits/stdc++.h>

using namespace std;

#define MOD 9973

bool prim[10000100];

int main(){
    ifstream in ("ssnd.in");
    ofstream out ("ssnd.out");

    for(long long i = 2 ; i <= 1000000 ; i ++){
        if(prim[i] == 0){
            for(long long j = i*i ; j <= 1000000 ; j += i)
                prim[j] = 1 ;
        }
    }

    vector<long long> a;

    for(long long i = 2 ; i <= 1000000 ; i ++)
        if(prim[i] == 0)
            a.push_back(i);

    int t , n ;
    in >> t;

    while(t--){
        in >> n ;
        map<long long,long long> m;
        vector<long long>::iterator it = a.begin();
        while(n != 1 ){
            while(n % (*it) == 0){
                m[(*it)]++;
                n /= *it;
            }
            it++;
        }
        double no = 1 , sum = 1 ;
        int aux;
        for(auto i:m){
            no *= (i.second+1);
            sum = sum * ((pow(i.first,i.second+1)-1)/(i.first-1));
            aux = sum ;
            aux %= MOD;
            sum = aux ;
        }
        out << no <<" " << sum <<endl;
    }

}