Untitled

 avatar
unknown
plain_text
a month ago
2.3 kB
5
Indexable
#include <stdio.h>
#include <math.h>


void contarMultiplos(char l, int I, int F, int K) {
    int cont = 0; // Contador de múltiplos

    // percorre os múltiplos de K no intervalo [I, F]
    for (int mult = K; mult <= F; mult += K) {
        if (mult >= I) { // verifica se o múltiplo está dentro do intervalo
            cont++;
        }
    }

    // imprime a letra e a quantidade de múltiplos
    printf("%c %d\n", l, cont);
}

int main() {
    int N, I, F;
    scanf("%d", &N); // lê a quantidade de fatores

    // verifica a restrição de N
    if (N < 1 || N > 26) {
        printf("Erro: N deve estar entre 1 e 26.\n");
        return 1; // termina o programa com código de erro
    }

    // array para armazenar os fatores
    char letras[N];
    int Ks[N];

    // lê os fatores
    for (int i = 0; i < N; i++) { // em cada iteração, o programa lê uma letra e um valor de K e armazena nos arrays letras e Ks
        scanf(" %c %d", &letras[i], &Ks[i]); // lê a letra e o valor de K

        // verifica a restrição de K
        if (Ks[i] <= 0 || Ks[i] > pow(10,9)) {
            printf("Erro: K deve ser um número positivo e menor ou igual a 10^9.\n");
            return 1; 
        }
    }

    // lê o intervalo [I, F] 
    scanf("%d %d", &I, &F);
    

    // verifica as restrições de I e F
    if (I < 0 || I > pow(10,9) || F < 0 || F > pow(10,9)) {
        printf("Erro: I e F devem estar entre 0 e 10^9.\n");
        return 1; 
    }

    // ordena as letras em ordem alfabética
    for (int i = 0; i < N - 1; i++) {
        for (int j = i + 1; j < N; j++) {
            if (letras[i] > letras[j]) {
                // Troca as letras
                char armzletra = letras[i];
                letras[i] = letras[j];
                letras[j] = armzletra;

                // troca os valores de K correspondentes
                int armzK = Ks[i];
                Ks[i] = Ks[j];
                Ks[j] = armzK;
            }
        }
    }

    // percorre os arrays novamente, para cada índice i, o programa chama a função contarMultiplos, passando a letra e o valor de K correspondentes
    for (int i = 0; i < N; i++) {
        contarMultiplos(letras[i], I, F, Ks[i]); // chama a função para contar múltiplos
    }

    return 0;
}
Editor is loading...
Leave a Comment