Cod sursa(job #1293558)

Utilizator badea_adi1999Badea Adrian Catalin badea_adi1999 Data 16 decembrie 2014 01:15:43
Problema Suma si numarul divizorilor Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <cstdio>
#define prim 9973
using namespace std;
FILE *f=fopen("ssnd.in","r");
FILE *g=fopen("ssnd.out","w");
long long n;
int d[100],e[100];

long long put(int t,int k)
{long long tt=1;
while (k!=0) {tt*=t;
              k--;}
return tt;
}
void rez()
{int i=2,nr=0;
fscanf(f,"%lld",&n);


while (n!=1)
        {if (n%i==0) {n/=i;
                      d[++nr]=i;
                      e[nr]=1;
                      while (n%i==0) {n/=i;
                                      e[nr]++;}
                      }
            else if (i*i>n)
                     {d[++nr]=n;
                      e[nr]=1;
                      n=1;
                      }
         i++;
         }
int di=1;
long long sum=1;
for (i=1;i<=nr;i++) di*=e[i]+1;
for (i=1;i<=nr;i++) sum*=(put(d[i],e[i]+1)-1)/(d[i]-1);
fprintf(g,"%d %d\n",di,sum%prim);
}

int main()
{int t;
fscanf(f,"%d",&t);
while (t!=0) {t--;
              rez();}
return 0;
}