Cod sursa(job #1337761)

Utilizator BlackLordFMI Alex Oprea BlackLord Data 9 februarie 2015 14:47:26
Problema Suma si numarul divizorilor Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 1.06 kb
#include <fstream>
#define mod 9973
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
int t, x, i, k, nrd, sd, v[1000010], aux, nr;
bool viz[1000010];

int putere(int x, int y){
    int aux=1;
    for(int i=1; i<=y; i++)
        aux=(aux*x)%mod;
    return aux;
}

void ciur(){
    viz[0]=1;
    viz[1]=1;
    v[1]=2;
    k=1;
    for(int i=3; i<1000001; i+=2)
        if(viz[i]==0)
        {
            v[++k]=i;
            for(int j=i+i; j<1000001; j+=i)
                viz[j]=1;
        }
}

int main(){
    ciur();
    f>>t;
    for(;t;t--)
    {
        f>>x;
        i=1;
        nrd=1;
        sd=1;
        while(x>1)
        {
            if(x%v[i]==0)
            {
                aux=1;
                nr=0;
                while(x%v[i]==0)
                    x/=v[i], nr++, aux=aux*v[i];
                aux*=v[i];
                nrd=nrd*(nr+1);
                sd=( sd*(aux-1)/(v[i]-1) )%mod;
            }
            i++;
        }
        g<<nrd<<' '<<sd<<"\n";
    }
    return 0;
}