Cod sursa(job #2145780)

Utilizator cezar_titianuTitianu Cezar cezar_titianu Data 27 februarie 2018 16:49:25
Problema Suma si numarul divizorilor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.3 kb
#include <fstream>

using namespace std;

ifstream fin("ssnd.in");
ofstream fout("ssnd.out");

long long int nrnr, sav, ras1, ras2, cnt, nri, help = 0;

bool flag[1000000];
long long int ciur[100000];

void div(long long int nrk){
    for(long long int index = 0; nrk > 1; index++){
        if(nrk % ciur[index] == 0){
            sav = 1;
            cnt = 0;
            while(nrk % ciur[index] == 0){
                cnt++;
                sav *= ciur[index];
                nrk /= ciur[index];
            }
            sav *= ciur[index];
            ras1 *= cnt + 1;
            ras2 *= (sav - 1) / (ciur[index] - 1);
            ras2 %= 9973;
        }
    }
}

int main()
{
    for(int index = 2; index <= 1000; index++){
        if(flag[index] == false){
            for(int index2 = index * index; index2 <= 1000000; index2 += index){
                flag[index2] = true;
            }
        }
    }
    for(int index = 2; index <= 1000000; index++){
        if(flag[index] == false){
            ciur[help] = index;
            help++;
        }
    }
    fin >> nrnr;
    for(long long int index = 0; index < nrnr; index++){
        fin >> nri;
        ras1 = 1;
        ras2 = 1;
        div(nri);
        fout << ras1 << " " << ras2 << endl;
    }
    return 0;
}