Ejemplo 1

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 8

Ejemplo 1

Tu amigo Christian es un matemático se la pasa horas y horas tratando de probar


una conjetura matemática, porque el quiere demostrar que es falsa, lleva tanto
tiempo que no ha salido de su cuarto en semanas y solo quiere ver si es falsa hasta
un millón para que pueda salir en paz, pero el día de mañana ambos tienen el
examen más importante de su semestre, el primer parcial de SIS 2310 “B”, como tu
amigo, no esta dispuesto a salir de ninguna forma y tu no quieres que repruebe la
materia estas decidido a probar esta conjetura: “Todo número par mayor que 2
puede ser expresado como la suma de 2 números primos”, Pero probar la conjetura
con todos los pares hasta un millón te tardaría demasiado tiempo, pero te acuerdas
que tu auxiliar te enseño la criba de Eratóstenes en su última clase, además viste
con tu Ingeniero desde búsqueda binaria, hasta diccionarios, así que tienes que
lograrlo, para cada numero par que ingreses menor o igual a un millón, tienes que
mostrar 2 números primos que sumen el número ingresado ¡Ayuda a tu amigo a
que no se falte al examen! ENTRADA: La primera línea consta de un número t (1 ≤
𝑇 ≤ 103) que determina la cantidad de casos de prueba, seguidos de T números N
(4 ≤ 𝑁 ≤ 106) se garantiza que N es par. SALIDA: La salida consta de 2 números
para cada caso, 2 números primos que sumados den al número par ingresado. Si
existen múltiples respuestas imprima cualquiera de ellas ENTRADA 6 4 12 22 36
SALIDA 2 2 5 7 11 11 5 31

#include <iostream>
#include <vector>

using namespace std;

// Función para verificar si un número es primo


bool esPrimo(int num) {
if (num <= 1) return false;
for (int i = 2; i <= num / 2; i++) {
if (num % i == 0) return false;
}
return true;
}

// Función para encontrar dos números primos que sumen el número par dado
void encontrarPrimos(int num) {
for (int i = 2; i <= num / 2; i++) {
if (esPrimo(i) && esPrimo(num - i)) {
cout << i << " " << num - i << endl;
return;
}
}
}

int main() {
int casos;
cin >> casos;

vector<int> numeros(casos);
for (int i = 0; i < casos; i++) {
cin >> numeros[i];
}

for (int i = 0; i < casos; i++) {


encontrarPrimos(numeros[i]);
}

return 0;
}
Ejemplo 2
Realizar una función donde se tiene un array ordenado que contiene numeros repetidos o
no. Se busca determinar la posición de un elemento en la que la suma de los elementos a la
izquierda de dicha posición sea igual a la suma de los elementos a la derecha. En caso de no
existir esa posición retornar -1.
Entrada
5
111 2 3
4
12 2 3
4
1 2 3 4
Salida
3
2
-1
#include <iostream>
#include <vector>

Using namespace std;

// Función para encontrar la posición de equilibrio en un array ordenado


Int encontrarPosicionEquilibrio(const vector<int>& nums) {
Int n = nums.size();
For (int i = 0; i < n; ++i) {
Int sumaIzquierda = 0;
Int sumaDerecha = 0;
// Calcular suma de elementos a la izquierda de la posición i
For (int j = 0; j < i; ++j) {
sumaIzquierda += nums[j];
}
// Calcular suma de elementos a la derecha de la posición i
For (int j = i + 1; j < n; ++j) {
sumaDerecha += nums[j];
}
// Verificar si la suma de elementos a la izquierda es igual a la suma de elementos a la
derecha
If (sumaIzquierda == sumaDerecha) {
Return i;
}
}
// No se encontró una posición de equilibrio
Return -1;
}

Int main() {
Int T;
Cin >> T; // Cantidad de casos de prueba
For (int i = 0; i < T; ++i) {
Int n;
Cin >> n; // Tamaño del array
Vector<int> nums(n);
For (int j = 0; j < n; ++j) {
Cin >> nums[j]; // Leer elementos del array
}
Cout << encontrarPosicionEquilibrio(nums) << endl; // Imprimir resultado
}
Return 0;
}
Ejemplo 3
Se desea desarrollar una función que reciba como parámetro un string que contiene
múltiples palabras, algunas de las cuales pueden repetirse. El objetivo es generar un nuevo
texto que sea equivalente al original, pero sin ninguna repetición de palabras, la función
retorna un string
Entrada
Chanchito chanchito feliz
Dcbaabcd
Gallinita ciega
Salida
Chanchito feliz
Abcd
Ciega gallinita
#include <iostream>
#include <sstream>
#include <vector>

Using namespace std;

// Función para eliminar las palabras repetidas del string


String eliminarRepetidas(string texto) {
Vector<string> palabras;
Stringstream ss(texto);
String palabra, resultado;
While (ss >> palabra) {
Bool repetida = false;
For (const string& p : palabras) {
If (p == palabra) {
Repetida = true;
Break;
}
}
If (¡repetida) {
Palabras.push_back(palabra);
Resultado += palabra + “ “;
}
}

If (¡resultado.empty()) {
Resultado.pop_back();
}

Return resultado;
}

Int main() {
String entrada;
While (getline(cin, entrada)) {
Cout << eliminarRepetidas(entrada) << endl;
}
Return 0;
}
Ejemplo 4
Realiza una funcion que recibe como parámetro un string que contiene una expresión con
paréntesis, determinar el número mínimo de parentesis de apertura o cierre deben realizarse
para que la expresión este correctamente balanceada
Entrada
(())
))))
)(()))((
Salida
0
4
3
En el caso 1, no se necesita realizar ninguna operación
En el caso 2, incrementar cuatro parentesis de apertura
En el caso 3, incrementar un parentesis de apertura al principio, y dos parentesis de cierre al
final
#include <iostream>
#include <stack>

using namespace std;

int minParentesisBalanceados(string expresion) {


stack<char> pila;
int aperturas = 0;
int cierres = 0;
for (char c : expresion) {
if (c == '(') {
pila.push(c);
} else if (c == ')') {
if (!pila.empty()) {
pila.pop();
} else {
cierres++;
}
}
}

aperturas = pila.size();

return aperturas + cierres;


}

int main() {
string entrada;
while (getline(cin, entrada)) {
cout << minParentesisBalanceados(entrada) << endl;
}
return 0;
}

También podría gustarte