Cod sursa(job #1337757)

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

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

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