Cod sursa(job #650519)

Utilizator FIIBCPBuzila Octavian Calin FIIBCP Data 18 decembrie 2011 13:15:04
Problema Suma si numarul divizorilor Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 1.67 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){
             long long x,sum, t, i, exponent;
             x=sum=1;
             for(i=1;a[i]*a[i]<=nr;i++){
                                        if(nr%a[i]==0){
                                                       exponent=1;
                                                     t=a[i];
                                                        while(nr%a[i==0]){
                                                                          exponent++;
                                                                       nr=nr/a[i];
                                                                       t=t*a[i];}
                                                     x=exponent*x;
                                                     sum*=(t-1)/(a[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(){
        f=fopen("ssnd.in","r");
g=fopen("ssnd.out","w");
        long long n,q;
        ciur();
        fscanf(f,"%lld",&n);
        while(n--){
                   fscanf(f,"%lld",&q);
                   sol(q);}
                   return 0;
                   }