• No se han encontrado resultados

Problemas sobre instrucciones estructuradas

N/A
N/A
Protected

Academic year: 2021

Share "Problemas sobre instrucciones estructuradas"

Copied!
30
0
0

Texto completo

(1)

Problemas sobre instrucciones estructuradas

(Desde trivial hasta muy dif´ıcil)

22 de enero de 2009

Indice

A. D´ıas del mes 2

B. Tri´angulos: equil´ateros, is´osceles, escalenos 3 C. D´ıgito hexadecimal a decimal 4 D. D´ıgitos de control de una cuenta corriente 5 E. Calcular el factorial de un n´umero 7 F. Cambio de may´usculas a MINUSCULAS 8 G. Ordenar tres n´umeros 9

H. Desplazar 10

I. Indicar el d´ıa de la semana 11 J. D´ıa Siguiente 12

K. Calendario 13

L. Cubos 14

M. Media, varianza y desviaci´on t´ıpica 15

N. Indicar si una fecha es correcta 16 ˜

N. Calcular el m´ınimo y el m´aximo de los n´umeros de una l´ınea 17

O. Rombos 18

P. Suma fracciones 19

Q. Cambio de base hexadecimal a decimal 20

R. Problema 3n+1 21

S. Generar matriz por columnas 22

T. Cambio de base 23

U. Divisi´on entera 24

V. Descomposici´on en primos 26

W. Ra´ız digital 27

X. Resoluci´on de una ecuaci´on de segundo grado 28 Y. Tri´angulo gr´afico 30

Esta colecci´on se ha desarrollado con la financiaci´on de la Universidad Complutense de Madrid, dentro del proyecto “Laboratorio virtual de programaci´on sin fronteras” (2008-33).

(2)

Problema A

D´ıas del mes

*.{pas,cpp,java}

Realiza un programa que muestre los d´ıas que tiene un mes. Para el mes de febrero se conside-rar´a que el a˜no no es bisiesto.

Descripci´on de la entrada

La entrada contiene, en su primera l´ınea, el n´umero de casos de prueba, que vendr´an separados en las l´ıneas siguientes. Cada dato de prueba consistir´a en un n´umero natural entre 1 y 12.

Descripci´on de la salida

La salida consistir´a en un n´umero por l´ınea con los resultados de los casos introducidos.

Ejemplo de entrada 3

2 7 10

Salida para el ejemplo de entrada 28

31 31

(3)

Problema B

Tri´angulos: equilateros, is´

osceles, escalenos

*.{pas,cpp,java}

El problema consiste en, dadas las longitudes de tres segmentos, indicar si forman o no un tri´angu-lo. En caso de que lo formen, adem´as se debe indicar el tipo de tri´angulo que forman: escaleno (todos los lados son distintos), equil´atero (tres lados iguales) o is´osceles (dos lados iguales). El usuario reci-bir´a como salida una frase de las siguiente: Las longitudes NO forman un tri´angulo.

Las longitudes forman un tri´angulo equil´atero. Las longitudes forman un tri´angulo isosceles. Las longitudes forman un tri´angulo escaleno.

Descripci´on de la entrada

La entrada contiene, en su primera l´ınea, el n´umero de casos de prueba, que vendr´an separados en las l´ıneas siguientes. Cada dato de prueba consistir´a a su vez en tres n´umeros naturales, que corresponden con las longitudes de los segmentos.

Descripci´on de la salida

La salida consistir´a en una frase por l´ınea con los resultados de los casos introducidos. Dicha frase deber´a estar en el siguiente formato: “Las longitudes NO forman un tri´angulo.” o “Las longitudes forman un tri´angulo escaleno”.

Ejemplo de entrada 5 8 8 8 1 1 5 2 3 2 1 0 1 6 7 8

Salida para el ejemplo de entrada

Las longitudes forman un tri´angulo equil´atero. Las longitudes NO forman un tri´angulo.

Las longitudes forman un tri´angulo isosceles. Las longitudes NO forman un tri´angulo.

(4)

Problema C

D´ıgito hexadecimal a decimal

*.{pas,cpp,java}

El problema consiste en convertir un d´ıgito hexadecimal al valor decimal correspondiente. Descripci´on de la entrada

La entrada contiene, en su primera l´ınea, el n´umero de casos de prueba, que vendr´an separados en las l´ıneas siguientes. Es decir, 1 d´ıgito hexadecimal en cada l´ınea.

Descripci´on de la salida

La salida consistir´a en un entero por l´ınea con el valor decimal equivalente que corresponda.

Ejemplo de entrada 4 A 3 C 5

Salida para el ejemplo de entrada 10

3 12 5

(5)

Problema D

Calcular los d´ıgitos de control de una cuenta corriente

*.{pas,cpp,java}

Un n´umero de cuenta o C´odigo de Cuenta Cliente (CCC) es una cadena de 20 d´ıgitos de la for-ma EEEEOOOODCNNNNNNNNNN. Los cuatro primeros d´ıgitos (EEEE) representan el c´odigo de la entidad bancaria, los cuatro siguientes (OOOO) representan el c´odigo de la oficina donde se dio de alta la cuenta, los dos siguientes (DC) son dos d´ıgitos de control y los 10 restantes (NNNNNNNNNN) representan el n´umero de cuenta.

Un n´umero de cuenta se da por v´alido cuando los d´ıgitos de control que aparecen en el c´odigo CCC coinciden con los d´ıgitos de control que se calculan a partir del CCC. En concreto, el d´ıgitoDse calcula a partir del c´odigo de entidad (EEEE) y del c´odigo de oficina (OOOO) utilizando un algoritmo basado en asignar distintos pesos a los d´ıgitos del c´odigo de entidad y de oficina y en la aritm´etica m´odulo 11. El algoritmo de c´alculo deDes como sigue:

1. La tabla de pesos para los d´ıgitos de control correspondientes es: pos. E0 E1 E2 E3 O0 O1 O2 O3

peso 4 8 5 10 9 7 3 6

2. Se calcula el valor ponderado siguiente:valor=PEi.pi+ P

Oj.pj Dondepi ypj son los pesos del correspondiente d´ıgitoEi uOj, seg´un la tabla anterior.

3. D = 11 - (valormod 11)

4. Como quiera que s´olo se permiten d´ıgitos entre0y9, si D=11 se reemplazar´ıa por D=0; y D=10 se reemplazar´ıa por D=1.

El d´ıgito de control C se refiere al n´umero de cuenta corriente (NNNNNNNNNN) del c´odigo CCC y se calcula de forma an´aloga al d´ıgito anterior:

1. La tabla de pesos correspondiente es:

pos. N0 N1 N2 N3 N4 N5 N6 N7 N8 N9

peso 1 2 4 8 5 10 9 7 3 6

2. Se calcula el valor ponderado siguiente:valor=PNi.piDondepies el peso del correspondiente d´ıgitoNi, seg´un la tabla anterior.

3. C = 11 - (valormod 11)

4. Como quiera que s´olo se permiten d´ıgitos entre0y9, si C=11 se reemplazar´ıa por C=0; y C=10 se reemplazar´ıa por C=1.

(6)

Descripci´on de la entrada

La entrada contiene un n´umero de cuenta sin separaci´on entre los campos de la entidad, c´odigo de la oficina, d´ıgito de control y c´odigo de cuenta.

Descripci´on de la salida

La salida consistir´a un mensaje indicando si la cuenta es correcta a no, siguiendo uno de los siguientes patrones. Se puede suponer que el n´umero introducido tiene 20 d´ıgitos.

La cuenta no de Cuenta NO es correcta. La cuenta no de Cuenta es correcta.

Ejemplo de entrada 24785478011458745852

Salida para el ejemplo de entrada

(7)

Problema E

Calcular el factorial de un n´

umero

*.{pas,cpp,java}

El problema consiste en dado un n´umero calcular su factorial. Descripci´on de la entrada

La entrada contiene, en su primera l´ınea, el n´umero de casos de prueba, que vendr´an separados en las l´ıneas siguientes. Cada caso de prueba consistir´a a su vez en un n´umero natural.

Descripci´on de la salida

La salida consistir´a en el factorial de cada caso de prueba.

Ejemplo de entrada 4 3 0 1 5

Salida para el ejemplo de entrada 6

1 1 120

(8)

Problema F

Cambio de may´

usculas a MIN´

USCULAS

*.{pas,cpp,java}

Realiza un programa que pida al usuario una frase y muestre como resultado la misma frase pero con las letras may´usculas convertidas en su equivalente min´uscula, las letras min´usculas convertidas en su equivalente may´uscula y mantenga todos los dem´as s´ımbolos (n´umeros, simbolos, signos de puntuaci´on, ...) iguales.

Descripci´on de la entrada

En la primera l´ınea contendr´a la frase en la que queremos cambiar sus may´usculas por min´usculas y al rev´es.

Descripci´on de la salida

La salida consistir´a en la frase convertida

Ejemplo de entrada Hola amigo Pepe

Salida para el ejemplo de entrada hOLA AMIGO pEPE

(9)

Problema G

Ordenar tres n´

umeros

*.{pas,cpp,java}

El programa consiste en ordenar tres n´umeros de menor a mayor. Descripci´on de la entrada

La entrada contiene, en su ´unica l´ınea, tres n´umeros enteros. Descripci´on de la salida

La salida consistir´a en los tres n´umeros introducidos ordenados de menor a mayor.

Ejemplo de entrada 8 -5 32

Salida para el ejemplo de entrada -5 8 32

(10)

Problema H

Desplazar

*.{pas,cpp,java}

El problema consiste en, dada una lista de n´umeros, desplazarlos una posici´on a la izquierda. Es decir, que el primer n´umero aparecer´a al final de la nueva secuencia, el segundo en la primera posici´on y as´ı sucesivamente.

Descripci´on de la entrada

La entrada contiene un ´unico caso de prueba, que consistir´a a su vez en una lista de n´umeros terminados en salto de l´ınea.

Descripci´on de la salida

La salida consistir´a en la lista de n´umeros desplazada a la izquierda del caso de prueba.

Ejemplo de entrada 3 -1 2 0

Salida para el ejemplo de entrada -1 2 0 3

(11)

Problema I

Indicar el d´ıa de la semana

*.{pas,cpp,java}

Realiza un programa que pida al usuario una fecha y muestre su d´ıa de la semana correspondien-te. El calendario actual de europa, se basa en el nos bisiestos son aquellos que son divisibles entre 4 excepto los divisibles por 100 que no son divisibles por 400. Sin embargo, en el calendario Juliano se consideraba que los bisiestos eran todos los a˜nos divisibles entre 4. En Espa˜na se paso del calendario Juliano al calendario Gregoriano en 1582. Al adoptar este calendario y para evitar el desfase acumulado con el no desaparecieron los d´ıas 5 al 14 de Octubre.

Nota: La ´unica consideraci´on sobre la fecha que se permite es que la fecha introducida es posterior al nacimiento de Cristo y que es una fecha Espa˜nola. Se recomienda utilizar la expresi´on de modificarla adecuadamente para que funcione con el calendario Juliano.

Descripci´on de la entrada

La entrada contiene, en su primera l´ınea, el n´umero de casos de prueba, que vendr´an separados en las l´ıneas siguientes. Cada caso de prueba consistir´a a su vez en tres n´umeros naturales. El primero corresponder´a con el d´ıa, el segundo con el mes y el tercero con el a˜no. Se puede suponer que dicho d´ıa, mes y a˜no forman una fecha correcta. Por tanto, la fecha nunca ser´a ninguno de los d´ıas que desaparecieron en 1582.

Descripci´on de la salida

La salida consistir´a con el d´ıa de la semana de la fecha.

Ejemplo de entrada 5 22 8 2003 2 2 100 29 1 2000 13 5 1996 15 3 1800

Salida para el ejemplo de entrada 22/8/2003: viernes.

2/2/100: domingo. 29/1/2000: s´abado.

(12)

Problema J

D´ıa siguiente

*.{pas,cpp,java}

Dada una fecha, se trata de calcular el d´ıa siguiente de dicha fecha. Es decir, el d´ıa, mes y a˜no del d´ıa siguiente a dicha fecha.

Descripci´on de la entrada

La entrada contiene, en su primera l´ınea, el n´umero de casos de prueba, que vendr´an separados en las l´ıneas siguientes. Cada caso de prueba consistir´a a su vez en una fecha. Es decir, tres n´umeros naturales separados por blancos. El primero corresponder´a con el d´ıa, el segundo con el mes y el tercero con el a˜no. Se considerar´a que cada fecha es correcta.

Descripci´on de la salida

La salida consistir´a en el d´ıa siguiente por cada caso de prueba.

Ejemplo de entrada 4 2 5 1979 28 2 2000 29 2 2000 31 12 2002

Salida para el ejemplo de entrada 3/5/1979

29/2/2000 1/3/2000 1/1/2003

(13)

Problema K

Mostrar el calendario de un mes

*.{pas,cpp,java}

Realiza un programa que pida al usuario una mes y un a˜no y muestre el calendario de dicho mes. Se debe tener en cuenta que el calendario actual est´a basado en el calendario Gregoriano. Por tanto, los a˜nos bisiestos son aquellos que son divisibles entre 4 excepto los divisibles por 100 que no son divisibles por 400. Sin embargo, en el calendario Juliano se consideraba que los bisiestos eran todos los a˜nos divisibles entre 4. En Espa˜na se paso del calendario Juliano al calendario Gregoriano en 1582. Al adoptar este calendario y para evitar el desfase acumulado con el calendario Juliano en dicho a˜no desaparecieron los d´ıas 5 al 14 de Octubre.

Nota: La ´unica consideraci´on sobre la fecha que se permite es que la fecha introducida es posterior al nacimiento de Cristo y que es una fecha Espa˜nola.

Descripci´on de la entrada

La entrada contiene, en su primera l´ınea, el n´umero de casos de prueba, que vendr´an separados en las l´ıneas siguientes. Cada caso de prueba consistir´a a su vez en dos n´umeros naturales. El primero corresponder´a con el mes (n´umero de 1 a 12) y el segundo con el a˜no.

Descripci´on de la salida

La salida consistir´a en el calendario del mes debidamente formateado, para cada caso de prueba. Empezando como primer d´ıa de la semana con el lunes.

Ejemplo de entrada

2 8 2003 10 1582

Salida para el ejemplo de entrada

Agosto 2003 L M X J V S D 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Octubre 1582 L M X J V S D

(14)

Problema L

Cubos

*.{pas,cpp,java}

Sabemos que sumando el primer impar, se obtiene el primer cubo; sumando los dos siguientes impares, se obtiene el segundo cubo; sumando los tres siguientes impares, se obtiene el tercer cubo, etc. Es decir:13 = 1,23 = 3 + 5 = 8,33 = 7 + 9 + 11 = 27, etc. Escribe un programa que calcule y

escriba tantos cubos como el usuario desee. Descripci´on de la entrada

La cantidad de cubos que queremos generar mediante dicha formula. Descripci´on de la salida

La salida consistir´a en el valor del cubo junto con el modo de obtenerlo.

Ejemplo de entrada 3

Salida para el ejemplo de entrada 1^3=1

2^3=3+5=8 3^3=7+9+11=27

(15)

Problema M

Media, varianza y desviaci´

on t´ıpica

*.{pas,cpp,java}

El problema consiste en dados varios valores reales positivos, calcular su media, su varianza y su desviaci´on t´ıpica.

Descripci´on de la entrada

La entrada contiene la lista de n´umeros reales positivos. La secuencia terminar´a con un valor negativo que no se incluir´a en el calculo de la media, la varianza y la desviaci´on t´ıpica. Adem´as todos los valores que se encuentren detr´as del valor negativo ser´an ignorados.

Descripci´on de la salida

La salida consistir´a en su media, su varianza y su desviaci´on t´ıpica.

Ejemplo de entrada 3 5 32.5 0.0 00 0 0 365. 36 3.2 3 5 8.3 -8 32 5.2

Salida para el ejemplo de entrada Media: 32.36

Varianza: 7679.99

(16)

Problema N

Indicar si una fecha es correcta

*.{pas,cpp,java}

El problema consiste en dada una fecha, indicar si esta es correcta o no en Espa˜na. Es decir, si existi´o o con el calendario actual se prev´e que existir´a. La tarea no es f´acil ya que se deben controlar varias posibles incorrecciones: Que el mes sea correcto. Que el d´ıa sea correcto con respecto al mes y al a˜no. Que el a˜no sea correcto. El calendario actual, que se basa en el tanto, los a˜nos bisiestos son aquellos que son divisibles entre 4 excepto los divisibles por 100 que no son divisibles por 400. Sin embargo, en el calendario Juliano se consideraba que los bisiestos eran todos los a˜nos divisibles entre 4. En Espa˜na se paso del calendario Juliano al calendario Gregoriano en 1582. Al adoptar este calendario y para evitar el desfase acumulado con el calendario Juliano en dicho a˜no desaparecieron los d´ıas 5 al 14 de Octubre.

Nota: La ´unica consideraci´on sobre la fecha que se permite es que la fecha introducida es posterior al nacimiento de Cristo y que es una fecha Espa˜nola.

Descripci´on de la entrada

La entrada contiene, en su primera l´ınea, el n´umero de casos de prueba, que vendr´an separados en las l´ıneas siguientes. Cada caso de prueba consistir´a a su vez en tres n´umeros enteros. El primero corresponder´a con el d´ıa, el segundo con el mes y el tercero con el a˜no.

Descripci´on de la salida

La salida consistir´a en la fecha introducida indicando si esta es correcta o no, de cada caso de prueba.

Ejemplo de entrada 5

(17)

Problema ˜

N

Calcular el m´ınimo y el m´aximo de los n´

umeros de una l´ınea

*.{pas,cpp,java}

El problema consiste en dada una l´ınea que contienen una secuencia de n´umero reales separados por espacios en blanco, calcular el valor m´ınimo y m´aximo de los n´umeros que aparecen en dicha secuencia de n´umeros. Por ejemplo, de la secuencia: -5.2 1.3 5.4 74. El m´ınimo corresponde con el valor real -5.2 y el m´aximo corresponde con el valor real 74.0.

Descripci´on de la entrada

La entrada contiene, en su primera l´ınea, el n´umero de casos de prueba, que vendr´an separados en las l´ıneas siguientes. Cada caso de prueba consistir´a a su vez en una secuencia no vac´ıa de n´umeros reales.

Descripci´on de la salida

La salida consistir´a en el valor m´ınimo y el m´aximo por cada caso de prueba, separados por un blanco y en ese orden. Mostrando ´unicamente los dos primeros decimales de dicho n´umero.

Ejemplo de entrada 9 8.3 8.1 8.5 8.25 8.3654 1.2 -1.9 5.8 0 0.25 2.587 3.6547 2 -3 2.6 -1 0 0 0.00 0.00000 -0 -1.3 1.2 5.21221 5 2.232 2.3211 -3.128 2.123 2.34821 -3.21 2.55

Salida para el ejemplo de entrada 8.10 8.50 -1.90 5.80 -3.00 2.60 -1.00 -1.00 0.00 0.00 0.00 0.00 -1.30 5.21 -3.13 2.32

(18)

Problema O

Rombos

*.{pas,cpp,java}

Escribe un programa que dado un n´umero impar, al que llamaremos ancho, genere un rombo for-mado por caracteres *. Los caracteres * del rombo estar´an separados por un blanco y la l´ınea interme-dia estar´a separada del margen derecho por un s´olo car´acter. La l´ınea central del rombo tendr´a tantos caracteres * como el ancho.

Descripci´on de la entrada

Consiste en un n´umero natural impar. Descripci´on de la salida

La salida consistir´a un rombo formado por caracteres *. Los caracteres * del rombo estar´an sepa-rados por un blanco y la l´ınea intermedia estar´a separada del margen derecho por un s´olo car´acter.

Ejemplo de entrada 7

Salida para el ejemplo de entrada * * * * * * * * * * * * * * * * * * * * * * * * *

(19)

Problema P

Suma fracciones

*.{pas,cpp,java}

El problema consiste en sumar una secuencia de fracciones. Como marca de finalizaci´on de dicha secuencia de fracciones utilizaremos una fracci´on con denominador igual a 0. Finalmente se presen-tar´a la fracci´on resultante simplificada en el el formato est´andar: “numerador/denominador”.

Descripci´on de la entrada

La entrada contiene una lista de fracciones, es decir dos n´umero enteros separados por un blanco, ninguna de ellas puede ser la fracci´on 0/0.

Descripci´on de la salida

La salida consistir´a en la fracci´on simplificada resultante de sumar la secuencia de fracciones de entrada.

Ejemplo de entrada 3 2 5 7

-6 3 2 0

Salida para el ejemplo de entrada 3/14

(20)

Problema Q

Cambio de base Hexadecimal a Decimal

*.{pas,cpp,java}

Realiza un programa que pida al usuario un n´umero en base hexadecimal y lo convierta a base decimal.

Descripci´on de la entrada

La entrada contiene, en su primera l´ınea, el n´umero de casos de prueba, que vendr´an separados en las l´ıneas siguientes. Cada caso de prueba consistir´a en un n´umero en base hexadecimal.

Descripci´on de la salida

La salida consistir´a en el correspondiente en base decimal, para cada caso de prueba.

Ejemplo de entrada 3

3A22 A 05

Salida para el ejemplo de entrada 14882

10 5

(21)

Problema R

Problema 3n+1

*.{pas,cpp,java}

Se parte de un n´umero natural y se aplica uno de los siguientes pasos: si es par se divide por 2, si es impar lo multiplicamos por tres y le sumamos 1. Se pide generar la secuencia de n´umeros que surgen con el algoritmo anterior hasta llegar al valor 1 e indicar cuantos pasos se han efectuado para alcanzar dicho valor.

Descripci´on de la entrada

La entrada contiene, en su primera l´ınea, el n´umero de casos de prueba, que vendr´an separados en las l´ıneas siguientes. Cada caso de prueba consistir´a a su vez en un n´umero.

Descripci´on de la salida

La salida consistir´a en el n´umero de pasos dados junto con los resultados obtenidos de cada caso de prueba. Ejemplo de entrada 5 3 6 14 27 32

Salida para el ejemplo de entrada

3, 10, 5, 16, 8, 4, 2, 1. Pasos: 7 6, 3, 10, 5, 16, 8, 4, 2, 1. Pasos: 8 14, 7, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1. Pasos: 17 27, 82, 41, 124, 62, 31, 94, 47, 142, 71, 214, 107, 322, 161, 484, 242, 121, 364, 182, 91, 274, 137, 412, 206, 103, 310, 155, 466, 233, 700, 350, 175, 526, 263, 790, 395, 1186, 593, 1780, 890, 445, 1336, 668, 334, 167, 502, 251, 754, 377, 1132, 566, 283, 850, 425, 1276, 638, 319, 958, 479, 1438, 719, 2158, 1079, 3238, 1619, 4858, 2429, 7288, 3644, 1822, 911, 2734, 1367, 4102, 2051, 6154, 3077, 9232, 4616, 2308, 1154, 577, 1732, 866, 433, 1300, 650, 325, 976, 488, 244, 122, 61, 184, 92, 46, 23, 70, 35, 106, 53, 160, 80, 40, 20, 10, 5, 16, 8, 4, 2, 1. Pasos: 111 32, 16, 8, 4, 2, 1. Pasos: 5

(22)

expan-Problema S

Generar matriz por columnas

*.{pas,cpp,java}

En este problema, se trata de generar una matriz cuyos elementos son los enteros correlativos, partiendo de 1, ordenados por columnas. Para ello se necesitan saber las dimensiones de la matriz que queremos generar. Es decir, filas y columnas de la matriz.

Descripci´on de la entrada

La entrada contiene una ´unica l´ınea con dos enteros: las dimensiones de la matriz; el primero indicar´a el n´umero de filas y el segundo el n´umero de columnas.

Descripci´on de la salida

La salida consistir´a en la matriz descrita, con un espacio en blanco precediendo cada elemento de la matriz, a manera de separador. Obs´ervese que la matriz no respeta la disposici´on por columnas, ya que los enteros de las filas inferiores podr´an ser m´as largos que los de las superiores. Otro detalle: tras el ´ultimo entero de cada fila no hay espacios “de relleno”, sino directamente el fin de dicha l´ınea.

Ejemplo de entrada 6 13

Salida para el ejemplo de entrada

1 7 13 19 25 31 37 43 49 55 61 67 73 2 8 14 20 26 32 38 44 50 56 62 68 74 3 9 15 21 27 33 39 45 51 57 63 69 75 4 10 16 22 28 34 40 46 52 58 64 70 76 5 11 17 23 29 35 41 47 53 59 65 71 77 6 12 18 24 30 36 42 48 54 60 66 72 78

(23)

Problema T

Cambio de base

*.{pas,cpp,java}

Uno de los problemas cl´asicos en inform´atica consiste en el cambio de base de los n´umeros. Los ordenadores utiliz´an base binaria para la representaci´on de los datos. Mientras que los n´umeros que solemos utilizar se encuentran en base 10. En este problema pretendemos resolver la conversi´on entre bases de los n´umeros enteros. M´as concretamente s´olo resolveremos la conversi´on de bases entre bases menores o iguales a 10.

Descripci´on de la entrada

La entrada consta de tres valores. Los dos primeros son dos n´umeros naturales que indican la base en la que se expresa el n´umero que queremos cambiar de base y la base a la que lo queremos convertir. El tercer valor corresponder´a con el n´umero que queremos cambiar de base. Tanto la base de origen como la de destino tienen que ser valores entre 2 y 10.

Descripci´on de la salida

La salida consistir´a en el n´umero convertido en la nueva base.

Ejemplo de entrada 2 10 101011

Salida para el ejemplo de entrada 35

(24)

Problema U

Divisi´

on eucl´ıdea

*.{pas,cpp,java}

La divisi´on eucl´ıdea del entero a (divisor) por el entero no nulo b (dividendo) es el c´alculo que permite encontrar los enteros q (cociente) y r (resto) tales que:

a=b∗q+r, con0 =< r <|b|

La divisi´on eucl´ıdea es la divisi´on entre enteros, con resto, que se ense˜na en los colegios (a alumnos de aproximadamente siete a˜nos), como introducci´on a la divisi´on exacta de los n´umeros reales.

El primer ejemplo es detallado - muestra las sustracciones intermediarias - y el segundo s´olo muestra los restos.

Cuando a o b es negativo, lo m´as pr´actico es hacer la divisi´on con los valores positivos |a|y|b|y luego adaptar el resultado. A partir del primer ejemplo, se puede hallar las divisiones de 16845 por -7, de -16845 por 7 y de -16845 por -7:

(25)

Esta informaci´on ha sido recogida de la

Gracias a este m´etodo podemos calcular el divisor y el resto de la divisi´on de cualquier dividendo lo suficientemente grande, con respecto a un divisor relativamente peque˜no. Se pide calcular el cociente y el resto de la divisi´on, donde el dividendo tenga a lo sumo tres cifras y el divisor sea todo lo grande que se quiera, siendo el resto siempre positivo.

Descripci´on de la entrada

La entrada contiene, en su primera l´ınea el divisor, de como mucho tres cifras (positivo y distinto de cero) y en su segunda l´ınea el dividendo (positivo), de cualquier longitud.

Descripci´on de la salida

La salida consistir´a en el cociente en la primera l´ınea y el resto en su segunda l´ınea. El resto tiene que ser positivo.

Ejemplo de entrada 125

28587414852744658284117141

Salida para el ejemplo de entrada 228699318821957266272937

(26)

Problema V

Descomposici´

on en primos

*.{pas,cpp,java}

Realiza un programa que pida al usuario un n´umero y que devuelva su descomposici´on en factores primos. Dicha descomposici´on deber´a mostrarse en el siguiente formato:

factor1 ˆ potencia1 + factor2 ˆ potencia2 + ... con los factores ordenados de menor a mayor. Descripci´on de la entrada

La entrada contiene, en su primera l´ınea, el n´umero de casos de prueba, que vendr´an separados en las l´ıneas siguientes. Cada caso de prueba consistir´a a su vez en un n´umero natural positivo, mayor que uno.

Descripci´on de la salida

La salida consistir´a en la descomposici´on en factores primos de cada caso de prueba.

Ejemplo de entrada 3

60 1387 25

Salida para el ejemplo de entrada 2^2*3*5

2*3*23 5^2

(27)

Problema W

Raiz digital

*.{pas,cpp,java}

Calcula la suma de los d´ıgitos que componen un n´umero entero tantas veces como sea necesario hasta obtener un resultado de un s´olo d´ıgito, al cual se le llamar´a ra´ız digital.

Descripci´on de la entrada

La entrada contiene un n´umero natural. Descripci´on de la salida

La salida consistir´a en la ra´ız digital de dicho n´umero.

Ejemplo de entrada 2

357 25874

Salida para el ejemplo de entrada 6

(28)

Problema X

Resoluci´

on de una ecuaci´

on de segundo grado

*.{pas,cpp,java}

Realiza un programa que ayude al usuario a resolver una ecuaci´on del siguiente tipo:

ax2+bx+c= 0

El usuario quiere saber el numero de soluciones que tiene, si son complejas o reales y el valor de las soluciones.

Descripci´on de la entrada

La entrada contiene, en su primera l´ınea, el n´umero de casos de prueba, que vendr´an separados en las l´ıneas siguientes. Cada caso de prueba consistir´a a su vez en tres n´umeros reales, el primero corresponder´a con el coeficiente del t´ermino de segundo grado, el segundo con el coeficiente del t´ermino de primer grado y el ´ultimo con el t´ermino independiente.

Descripci´on de la salida

La salida consistir´a en una frase en la que se indicar´a la ecuaci´on inicial y se mostrar´an tanto el n´umero de soluciones como las soluciones, para cada caso de prueba. La frase se generar´a con uno de los siguientes patrones dependiendo del resultado:

La ecuaci´onnum1x^2 +num2x+num3 = 0tiene 2 soluciones reales:

x1 =sol1 y x2 =sol2.

La ecuaci´onnum1x^2 +num2x+num3 = 0 es incorrecta.

(29)

Ejemplo de entrada 7 -3.2 2 5 0 0 3 -35 2.58 0 -32 -2.2 1.08 -1 -1 -12 0 0 0 0 2 3

Salida para el ejemplo de entrada

La ecuaci´on -3.20 x^2 + 2.00 x + 5.00 = 0 tiene 2 soluciones reales: x1= -0.98 y x2= 1.60.

La ecuaci´on 0.00 x^2 + 0.00 x + 3.00 = 0 es incorrecta.

La ecuaci´on -35.00 x^2 + 2.58 x + 0.00 = 0 tiene 2 soluciones reales: x1= 0.00 y x2= 0.07.

La ecuaci´on -32.00 x^2 + -2.20 x + 1.08 = 0 tiene 2 soluciones reales: x1= -0.22 y x2= 0.15.

La ecuaci´on -1.00 x^2 + -1.00 x + -12.00 = 0 tiene 2 soluciones complejas: x1= -0.50 + -3.43i y x2= -0.50 - -3.43i.

La ecuaci´on 0.00 x^2 + 0.00 x + 0.00 = 0 tiene infinitas soluciones. La ecuaci´on 0.00 x^2 + 2.00 x + 3.00 = 0 tiene 1 soluci´on: x= -1.50.

(30)

Problema Y

Tri´angulo gr´afico

*.{pas,cpp,java}

Se pide realizar un programa que muestre una pir´amide. Esta pir´amide a su vez estar´a formada de otras pir´amides m´as peque˜nas creadas con s´ımbolos *. Para ello se solicitar´an dos n´umeros naturales al usuario. El primero se corresponder´a con la altura de la pir´amide grande. El segundo se correspon-der´a con la altura de las pir´amides peque˜nas. Las pir´amides peque˜nas estar´an formadas por s´ımbolos *, en cada fila habr´a dos s´ımbolos m´as que en la anterior. Por tanto, en la ´ultima fila habr´a altura*2-1 s´ımbolos *. La pir´amide grande se construir´a a trav´es de las pir´amides peque˜nas siguiendo un algo-ritmo un poco diferente. Para ello en cada fila habr´a una pir´amide m´as que en la anterior y cada pir´amide peque˜na se separar´a de la siguiente a trav´es de un espacio en blanco. De esta forma la base de la pir´amide grande estar´a formada por la misma cantidad de de pir´amides peque˜nas que la altura de dicha pir´amide.

Descripci´on de la entrada

Consiste en un dos naturales. El primero corresponde al n´umero de filas de las pir´amides y el segundo a la altura de cada pir´amide.

Descripci´on de la salida

La salida consistir´a en una pir´amide formada por caracteres *.

Ejemplo de entrada 3 5

Salida para el ejemplo de entrada

| * |

Referencias

Documento similar

Si no hay respuesta a los sondeos de prueba dirigidos dentro del temporizador del explorador- descanso, después se borra la entrada de caché. Ésta es la primera punta en la cual

Los ficheros de funci ´on se crean y editan como si se trataran de ficheros de comandos (script), es decir utilizando la Ventana de Edici ´on,. La primera l´ınea ejecutable de

La parte II contiene el teorema de existencia y el de problema bien puesto, desigualdades que involucran derivadas y propiedades asintôticas, asî como los casos en que F es