Untitled
unknown
plain_text
8 months ago
2.3 kB
6
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