Cod sursa(job #1017271)

Utilizator CatalinaRaduCatalina Elena Radu CatalinaRadu Data 27 octombrie 2013 16:45:34
Problema Suma si numarul divizorilor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include <iostream>
#include <fstream>
#include <math.h>

using namespace std;
ifstream f ("ssnd.in");
ofstream g ("ssnd.out");

long long putere (long x, long y)
{
    long i;
    long long p;
    for (i=1;i<=y;i++)
        p=p*x;
    return p;
}
 void desc (long long n)
 {
    long i=2,j,nrdiv,sdiv,s;
    long d[1000000],p[1000000];
    long nr=0,aux=n;
    for (j=1;j<1000000;j++)
        d[j]=0;
    nrdiv=1;sdiv=1;
    while (aux!=1)
     {

      if (aux%i==0)
        {
        p[nr++]=i;
        while (aux%i==0)
        {aux=aux/i;d[nr]++;}}
    i++;}
    for (i=1;i<=nr;i++)
        {nrdiv=nrdiv*(d[i]+1);
        s=putere (p[i],d[i]+1)/(p[i]-1);
        sdiv= sdiv*s;

 }}

int main()
{
    int t,i; long n;
    long nrdiv,sdiv;
    f>>t;
    for (i=1;i<=t;i++)
    {
        f>>n;
        desc(n);
        g<<nrdiv<<" "<<sdiv%1993<<endl;
    }
    f.close();g.close();
    return 0;
}