Cod sursa(job #1823736)

Utilizator 1475369147896537415369Andrei Udriste 1475369147896537415369 Data 6 decembrie 2016 19:48:32
Problema Suma si numarul divizorilor Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 0.9 kb
#include <stdio.h>
#include <string.h>
#define MOD 9973

long long expo(long long a, long long b){

long long result = 1;

while (b){

    if (b&1){
        result = (result * a);
    }

    b >>= 1;
    a = (a * a);
}

return result;
}

int main(){

FILE *file1, *file2;
int T, M, N, i, Sum, nDiv, power;

file1 = fopen("ssnd.in", "r");
file2 = fopen("ssnd.out", "w");

fscanf(file1, "%d", &T);

while(T--){

    nDiv = 1;
    Sum = 1;
    M = N;

    fscanf(file1, "%d", &N);

    for(i=2; i*i<=N; i++){
        power = 0;
        if(!(M%i)){
            while(M && M%i==0){
                M /= i;
                power++;
            }
            nDiv *= (power + 1);
             Sum = (Sum * (expo(i, power+1) - 1) / (i - 1)) % MOD;

        }
        if(M==1){
            break;
        }
    }
}

fprintf(file2, "%d %d\n", nDiv, Sum);

return 0;
}