Cod sursa(job #2200963)

Utilizator icansmileSmileSmile icansmile Data 2 mai 2018 22:29:14
Problema Suma si numarul divizorilor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.07 kb
#include <stdio.h>
#include <cstdlib>

#define MAX_N 10000000
#define MOD 9973

int main() {
    int n;
    int element;
    int *divisorsCount = (int *)calloc(MAX_N, sizeof(int));
    int *divisorsSum = (int *)calloc(MAX_N, sizeof(int));

    FILE *input = fopen("ssnd.in", "r");
    FILE *output = fopen("ssnd.out", "w");

    divisorsCount[0] = 0;
    divisorsCount[1] = 1;

    divisorsSum[0] = 0;
    divisorsSum[1] = 1;

    for(int i = 2; i <= MAX_N; i++) {
        divisorsCount[i] = 2;
        divisorsSum[i] = 1 + i;
    }

    for(int i = 2; i <= MAX_N; i++)
            for(int j = i + i; j <= MAX_N; j = j + i) {
                divisorsCount[j] += 1;
                divisorsSum[j] += i;
                divisorsSum[j] %= MOD;
            }

    fscanf(input, "%d", &n);
    for (int i = 0; i < n; i++) {
        fscanf(input, "%d", &element);
        fprintf(output, "%d %d\n", divisorsCount[element], divisorsSum[element]);
    }

    free(divisorsCount);
    free(divisorsSum);

    fclose(input);
    fclose(output);

    return 0;
}