O algoritmo será:
{
// Marque a frequência de todos os elementos
unordered_map <int, int> freq;
para (int i = 0; i <n; i ++)
freq [a [i]] ++;
// Obtém o primeiro elemento máximo
int maxi1 = * max_element (a, a + n);
// Diminuir a frequência de todos os divisores
// do número máximo que está presente
// int a []
para (int i = 1; i * i <= maxi1; i ++) {
if (maxi1% i == 0 &&
freq.find (i)! = freq.end () &&
freq [i]! = 0) {
freq [i] -;
if (i! = (maxi1 / i) &&
freq.find (maxi1 / i)! = freq.end () &&
freq [maxi1 / i]! = 0)
freq [maxi1 / i] -;
}
}
// O segundo número é o maior número
// presente nos números restantes.
int maxi2 = -1;
para (int i = 0; i <n; i ++) {
if (freq [a [i]]! = 0)
maxi2 = max (maxi2, a [i]);
}
cout << maxi1 << "" << maxi2;
}
// Driver Code
int main ()
{
int a [] = {10, 2, 8, 1, 2, 4, 1, 20, 4, 5};
int n = tamanho de (a) / sizeof (a [0]);
getNumbers (a, n);
return 0;
}
O algoritmo será:
{
// Marque a frequência de todos os elementos
unordered_map <int, int> freq;
para (int i = 0; i <n; i ++)
freq [a [i]] ++;
// Obtém o primeiro elemento máximo
int maxi1 = * max_element (a, a + n);
// Diminuir a frequência de todos os divisores
// do número máximo que está presente
// int a []
para (int i = 1; i * i <= maxi1; i ++) {
if (maxi1% i == 0 &&
freq.find (i)! = freq.end () &&
freq [i]! = 0) {
freq [i] -;
if (i! = (maxi1 / i) &&
freq.find (maxi1 / i)! = freq.end () &&
freq [maxi1 / i]! = 0)
freq [maxi1 / i] -;
}
}
// O segundo número é o maior número
// presente nos números restantes.
int maxi2 = -1;
para (int i = 0; i <n; i ++) {
if (freq [a [i]]! = 0)
maxi2 = max (maxi2, a [i]);
}
cout << maxi1 << "" << maxi2;
}
// Driver Code
int main ()
{
int a [] = {10, 2, 8, 1, 2, 4, 1, 20, 4, 5};
int n = tamanho de (a) / sizeof (a [0]);
getNumbers (a, n);
return 0;
}
Para escrever sua resposta aqui, entre ou crie uma conta.
Algoritmos e Linguagem de Programação
•IFPA
Compartilhar