Cod sursa(job #865622)

Utilizator roxannemafteiuMafteiu-Scai Roxana roxannemafteiu Data 26 ianuarie 2013 18:17:27
Problema Suma si numarul divizorilor Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1.21 kb
#include <stdio.h>
#include<math.h>
FILE *in,*out;
using namespace std;
int t,exponent;
long long nr,n,u,i,j,k;
long long v[5000002];unsigned long long prod;
bool  c[1000002];
int main()
{
    in=fopen("ssnd.in","rt");
    out=fopen("ssnd.out", "wt");
    fscanf(in, "%d", &t);
   v[++u]=2;
    for(i=4;i<=1000001; i+=2)
         c[i]=1;

     for(i=3;i<=1000001;i+=2)
          if (!c[i])
           { v[++u]=i;
               for (j=i+i; j<=1000000; j+=i)
                   c[j]=1;
           }


    for (i=1 ; i<=t ; i++)
     {
         fscanf(in, "%lld", &n);
         nr=1;
         prod=1;

         for(k=1;n>1;k++)
              {   exponent=0;
                  while(n%v[k]==0)

                 {
                     n/=v[k];

                     exponent++;
                 }
                //calc nr de divizori
                if(exponent)
                {

                exponent++;
                 nr*=(exponent);

                 //calc suma diviz
                 prod*=(pow(v[k], exponent)-1)/(v[k]-1);

                }
        }
          fprintf(out, "%.lld %.lld\n", nr, prod%9973);
     }


    fclose(in);
    fclose(out);
    return 0;
}