Cod sursa(job #2012894)

Utilizator icansmileSmileSmile icansmile Data 19 august 2017 19:31:23
Problema Divizori Primi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <stdio.h>
#define MAX 1000000
#define MAX_NUMBER_OF_DIVISORS 8

int primes[MAX + 1];
int solution[MAX + 1][MAX_NUMBER_OF_DIVISORS + 1];

int main() {
    FILE *input = fopen("divprim.in", "r");
    FILE *output = fopen("divprim.out", "w");
    int numberOfTests;
    int numberOfDivisors;
    int upperBound;

    primes[0] = 0;
    primes[1] = 0;
    for (int i = 2; i <= MAX; i++)
        if (primes[i] == 0)
            for (int j = i; j <= MAX; j += i)
                primes[j]++;

    solution[1][0] = 1;

    for (int i = 2; i <= MAX; i++) {
        for (int j = 0; j <= 7; j++) {
            solution[i][j] = solution[i - 1][j];
        }
        solution[i][primes[i]] = i;
    }

    fscanf(input, "%d", &numberOfTests);
    for (int i = 0; i < numberOfTests; i++) {
        fscanf(input, "%d %d", &upperBound, &numberOfDivisors);
        fprintf(output, "%d\n", solution[upperBound][numberOfDivisors]);
    }

    fclose(input);
    fclose(output);

    return 0;
}