Untitled
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