Cod sursa(job #865514)

Utilizator roxannemafteiuMafteiu-Scai Roxana roxannemafteiu Data 26 ianuarie 2013 16:44:31
Problema Suma si numarul divizorilor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.19 kb
#include <stdio.h>
#include<math.h>
FILE *in,*out;
using namespace std;
int t,i,c[1001],j,u,v[1001],n,poz,l,exponent,S;
double putere,prod,nr;
int main()
{
    in=fopen("ssnd.in","rt");
    out=fopen("ssnd.out", "wt");
    fscanf(in, "%d", &t);
    putere=pow(10,4);
    for(i=2;i<=putere; i++)
          if (!c[i])
           {
               for (j=i+i; j<=putere; j+=i)
                   c[j]=1;
           }
      for (i=2; i<=putere; i++)
           if(!c[i])
              v[++u]=i;
    for (i=1 ; i<=t ; i++)
     {
         fscanf(in, "%d", &n);
         nr=1;
         prod=1;poz=1;
         while (n>1)
          {
              exponent=0;
              while (n%v[poz]==0)
                 {
                     n/=v[poz];
                     S+=v[poz];
                     exponent++;
                 }
                //calc nr de divizori
                if(exponent>=1)
                 nr*=(exponent+1);

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


                poz++;
          }
          fprintf(out, "%.lf %.lf\n", nr, prod);
     }


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