Primera Olimpiada de Informática Problema - Sumando Digitos Comenzando con un entero entre 00 y 99 inclusive, escritos como dos dígitos (use un cero a la izquierda en caso de que el numero sea menor que 0). Realice los siguiente:. Sume los dos dígitos. 2. Ahora concéntrese en el dígito de la derecha, en el número original y en el de la suma.. Finalmente combine estos números. Si repetimos este proceso varias veces obtenemos el número original.. Por ejemplo Inicio Sume los dos dígitos Combine los dos dígitos ------------------------------------------------------ 26 : 2+6 = 08 : "6" y "8" = 68 68 : 6+8 = 4 : "8" y "4" = 84 84 : 8+4 = 2 : "4" y "2" = 42 42 : 4+2 = 06 : "2" y "6" = 26 En este caso tomo 4 pasos para obtener el número original. Se pide que devuelva el número de pasos requeridos para obtener el número original. Entrada Escriba en una linea que contiene un numero 0 N 99. Salida Escriba en una línea el numero de pasos requeridos para obtener el numero original. Ejemplos de entrada 26 0 Ejemplos de salida 4 Problema Para el dato de entrada siguiente escriba un programa que halle la respuesta. 7 La respuesta que debes entregar es: 2
Primera Olimpiada de Informática 2 Análisis y Solución Para obtener el primer dígito de un numero de dos dígitos hacemos dividimos por 0, el ultimo dígito se halla haciendo modulo 0. Luego nos piden sumar ambos. Para crear un numero nuevo con el primer dígito y el ultimo dígito hallado multiplicamos el primer dígito por 0 y sumamos el segundo. Programa que resuelve el problema #include <iostream> 2 #include <vector> 4 using namespace std ; 6 int main(){ 7 int count = ; 8 int start ; 9 cin>>start ; 0 int n=start ; for (; ; count++) { 2 int m = n/0 + n%0; n = (n%0) 0 + m%0; 4 if (n == start ) { cout<< count << endl ; 6 break; 7 } 8 } 9 20 }
Primera Olimpiada de Informática Problema - Acuario Es bien conocido que en un acuario algunos peces se pueden comer a otros. Usted tiene un acuario que contiene un cantidad de peces del cual conoce el tamaño. Usted sabe que un pez se puede comer a otro, solo cuando está en el rango de: el doble de tamaño o 0 veces más grande. Se quiere agregar un pez a la pecera, pero queremos determinar el tamaño para no causar conflictos de comerse con otros peces. Considerando esto usted debe escoger un pez que esté entre los siguientes tamaños No hay riesgo de ser comido por otro pez si su tamaño no está entre /0 y /2 inclusive, del tamaño de otro pez. No tiene tentación de comerse a otro pez si el tamaño de los otros peces no están entre /0 y /2 inclusive de su tamaño. Por ejemplo si los tamaños de los peces están entre y 2 y queremos insertar un pez, ese puede tener tres posibles tamaños. Los posibles tamaños para el pez que están fuera del rango establecido son,, 2. Entrada Laentradaconsistedevariaslíneas.Laprimeralíneadeuncasodepruebaconsisteeneltamaño más pequeño. La segunda línea consiste en el tamaño más grande que puede tener. La tercera línea tiene el número de peces en el acuario. La cuarta línea tiene los tamaños de los peces del acuario separados por un espacio. Salida Escriba en una línea el número de tamaños que puede hallar y que no causen conflictos entre peces. Ejemplos de entrada Ejemplo 2 Ejemplo 2 2 999 6 94 797 20 4 7 20 Ejemplos de salida Salida del Ejemplo Salida del Ejemplo 2 0
Primera Olimpiada de Informática 4 Problema Para el dato de entrada siguiente escriba un programa que halle la respuesta. 997 6 0 2 4 6 82 8 84 8 720 70 740 70 760 770 La respuesta que debes entregar es: 47 Análisis y Solución La solución del problema es bastante sencilla: Se debe tomar todos los tamaños de los peces desde el más pequeño que en nuestro programa llamaremos tamm in hasta el más grande que denominaremos tamm ax. Para cada uno de los tamaños de peces se verifica si algún pes se lo puede comer. Si no se lo puede comer contamos este tamaño como una solución. Al final imprimimos cuantas soluciones hemos encontrado. Programa que resuelve el problema #include <iostream> 2 #include <vector> 4 using namespace std ; 6 bool come(int v, int v2) 7 { 8 return (v>=v2 2 && v<=v2 0) ; 9 } 0 int main(){ 2 int n=0, tammin=0,tammax=0; cin>>tammax; 4 cin>>n; int pez[n]; 6 for (int i = 0; i<n; i++) 7 cin>>pez[ i ]; 8 9 int i, j, respuesta=0; 20 for( i=tammin; i<=tammax; i++) 2 {
Primera Olimpiada de Informática 22 for(j=0; j<n; j++) 2 24 if (come(i, pez[ j ]) come(pez[ j ], i )) 2 break; 26 if (j==n) 27 respuesta++; 28 } 29 cout<< respuesta << endl ; 0 }
Primera Olimpiada de Informática 6 Problema - Gusanillo El gusanillo es una criatura de hábitos regulares. Se estira hacia adelante alguna distancia a lo largo de una rama de un árbol y para descansar. Si se detiene en una hoja se la come. Luego se estira la misma distancia que se estiro antes, y repite esta rutina hasta que se pasa del final de la rama. Considere un gusanillo que recorre la longitud de una rama cuyas hojas esta espaciadas a intervalos uniformes. Dependiendo de la distancia entre el gusanillo y sus puntos de descanso puede o no puede comerse todas las hojas. Siempre existe una hoja al principio de la rama donde descansa antes de iniciar su recorrido. Dados tres valores que especifican la longitud de la rama en centímetros, la distancia que recorre entres descansos y la distancia entre un par consecutivo de hojas, calcule el numero de hojas que el gusanillo consumirá. Entrada En una línea, separados por un espacio, vienen el tamaño de la rama, la distancia que recorre entre descansos y la distancia entre pares consecutivos de hojas. La entrada termina cuando no hay mas datos. Salida Escriba en una línea el número de hojas que el gusanillo comería. Ejemplos de entrada 2 4 2 6 4 20 7 2 7 6 Ejemplos de salida 2 2 Problema Para el dato de entrada siguiente escriba un programa que halle la respuesta. 799 76 7 La respuesta que debes entregar es: Análisis y Solución Debemos sumar el avance del gusanillo hasta llegar al final de la rama, en cada avance hay que ver si se encuentran hojas.
Primera Olimpiada de Informática 7 Programa que resuelve el problema #include <iostream> 2 #include <vector> 4 using namespace std ; 6 int contar(int rama, int descanso, int hojas){ 7 int ct = 0 ; 8 int i = 0 ; 9 for (;;) { 0 if ( i > rama) { return ct ; 2 } if ( i % hojas == 0) ct++ ; 4 i += descanso ; } 6 } 7 8 int main(){ 9 20 int rama, descanso, hojas ; 2 cin >> rama; 22 cin >> descanso ; 2 cin >> hojas ; 24 cout << (contar(rama, descanso, hojas)) << endl ; 2 }
Primera Olimpiada de Informática 8 Problema - Mastil El mástil de un velero se ha roto, y debemos reemplazarlo, para ello se necesita saber la medida exacta del mismo. En el velero ha quedado la cuerda aún amarrada de los extremos al piso del bote. Cada amarre se encuentra a una distancia distinta de la base del mastil, estas distancias son conocidas además del largo de la cuerda en la que se sujetan las velas, un ejemplo de la situación se muestra en la figura. Con esta información se debe calcular el alto del mastil. Entrada La entrada consiste de tres numeros enteros positivos: m, n, largo, que indican la distancia del primer amarre, del segundo amarre y el largo de la cuerda, respectivamente. m, n, puede tomar valores entre 2 y 00 inclusive, y el largo de la cuerda entre y 000 inclusive. El largo siempre es mayor que la suma de m y n. Salida La salida es un número real con a lo sumo dos dígitos de precisión que indique la altura del mástil a comprar. Ejemplos de entrada 0 Ejemplos de salida 2.9 Problema Para el dato de entrada siguiente, escriba un programa que halle la respuesta. 6 20
Primera Olimpiada de Informática 9 Problema - Apariencia triangular Se puede contornear un triángulo rectángulo en base a puros asteriscos. Para ello se requiere de la altura y base del triángulo. Hay que tener cuidado que sólo funciona para triángulos rectángulos perfectos, es decir que se pueda mostrar con esos datos de forma correcta. En caso de que el triángulo no cumpla esta condición de perfección, entonces debe mostrar un mensaje No posible. Encuentra la condición para que un triángulo sea perfecto y realiza el proceso que permita decidir si es posible o no al triángulo mostrarse. Por ejemplo: Si el triángulo tiene altura 4 y base, es posible mostrar, y el contorno será: * * * * * * * * por lo que la respuesta será: Si posible. Pero si el triágulo tiene altura y base no se puede mostrar, por lo que la respuesta es No posible. Entrada Se da como entrada la altura y base del triángulo, que son números enteros positivos entre y 000 inclusive. La base siempre es menor que la altura. Salida La salida es un mensaje Si posible o No posible. Ejemplos de entrada 0 Ejemplos de salida No posible Problema Para el dato de entrada siguiente escriba un programa que halle la respuesta. 000 00 La respuesta que debes entregar es: No posible
Primera Olimpiada de Informática 0 Análisis y Solución Luego de hacer varios dibujos podemos llegar a la conclusión que (2 base 4) = altura 2. En este caso no es aplicable el teorema de Pitágoras, porque, debe considerar que un carácter no puede estar en media linea. Programa que resuelve el problema #include<iostream> 2 using namespace std ; 4 int main(){ int altura, base ; 6 7 cin>>altura ; 8 cin>>base ; 9 // (base ) 2 2 0 if ((2 base 4) == altura 2) cout<< Si posible <<endl ; 2 else cout<< No posible <<endl ; 4 return 0; }