Cod sursa(job #650525)

Utilizator FIIBCPBuzila Octavian Calin FIIBCP Data 18 decembrie 2011 13:23:57
Problema Suma si numarul divizorilor Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 1.76 kb
#include <stdio.h>
#include <math.h>
int i,j,n,cont;
int a[1000000];
 FILE *f,*g;

void ciur (){

for(i=2;i<=n;i++)a[i]=1;
   for(i=2;i<=n;i++)
  if(a[i]==1)
    {cont++;
    for(j=i+i;j<=n;j+=i)
        a[j]=0;
        
        }
        }
        void sol(long long nr){
             f=fopen("ssnd.in","r");
             g=fopen("ssnd.out","w");
             int b[1000000];
             long long x,sum, t, i, exponent;
             x=sum=1;
             for(i=1;b[i]*b[i]<=nr;i++){
                                        if(nr%b[i]==0){
                                                       exponent=1;
                                                     t=a[i];
                                                        while(nr%b[i]==0){
                                                                          exponent++;
                                                                       nr=nr/b[i];
                                                                       t=t*b[i];}
                                                     x=exponent*x;
                                                     sum*=(t-1)/(b[i]-1)%9973;
                                                     }
                                                     }
               if(nr!=1){
                         sum*=(nr*nr-1)/(nr-1)%9973;
                         x=x*2;}
               
               fprintf(g,"%lld %lld",x,sum%9973);
               }
    
    int main(){
        long long n,q;         
        ciur();
        fscanf(f,"%lld",&n);
        while(n--){
                   fscanf(f,"%lld",&q);
                   sol(q);}
                   fclose(f);fclose(g);
                   return 0;
                   }