Cod sursa(job #1337776)

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

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

void ciur(){
    long long i, j;
    viz[0]=1;
    viz[1]=1;
    v[1]=2;
    k=1;
    for(i=3; i<1000001; i+=2)
        if(viz[i]==0)
        {
            v[++k]=i;
            for(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=aux*v[i];
                nrd=nrd*(nr+1);
                sd=( sd*(aux-1)/(v[i]-1) )%mod;
                if(sd==0)
                    sd=mod;
            }
            i++;
        }
        g<<nrd<<' '<<sd<<"\n";
    }
    return 0;
}