Tarea
Tarea
Tarea
1. No múltiplos
2 Suma de naturales
3 Número mayor
4 Productos especiales
5 Contar combinaciones de dados
6 Histograma
7 Más corta y más larga
8 Piezas de dominó
9 Lanzar dados
Ruteos
10 Ojo con la indentación
11 Ruteos varios
Diseño de algoritmos
12 Dígitos
13 Dígito verificador
14 Ecuación primer grado
15 Caballo de ajedrez
16 Media armónica
17 Números palíndromos
18 Palabras palíndromas
19 Cachipún
20 Números primos
21 El mejor número
22 Adivinar el número
23 Suma de tres cubos
24 Números de Fibonacci
25 Espiral
26 Suma de dígitos al cubo
27 Multiplicación rusa
28 Números amistosos
29 Método de Newton
30 Triángulo de Pascal
31 Torre y alfil
32 Rango
33 Valor actual neto
34 Reglamento de evaluaciones
35 Votaciones de la CONFECH
36 Promoción con descuento
37 Alzas del dólar
38 Máquina de alimentos
39 Intersección de circunferencias
Productos especiales
Escriba sendos programas que pidan al usuario la entrada correspondiente y
calculen las siguientes operaciones:
n!=1⋅2⋅3⋅⋯⋅n.n!=1⋅2⋅3⋅⋯⋅n.
nm¯=n(n+1)(n+2)⋯(n+m−1).nm¯=n(n+1)(n+2)⋯(n+m−1).
(nk)=n⋅(n−1)⋅(n−2)⋅⋯⋅(n−k+1)1⋅2⋅3⋅⋯⋅k=n!(n−k)!k!.(nk)=n⋅(n−1)⋅(
n−2)⋅⋯⋅(n−k+1)1⋅2⋅3⋅⋯⋅k=n!(n−k)!k!.
S(n,k)=1k!∑i=0k(−1)j(ki)(k−i)n
Un puntaje dado puede ser obtenido con varias combinaciones posibles. Por
ejemplo, el puntaje 4 se logra con las siguientes tres combinaciones: 1+3, 2+2 y
3+1.
Histograma
Escriba un programa que pida al usuario que ingrese varios valores enteros,
que pueden ser positivos o negativos. Cuando se ingrese un cero, el programa
debe terminar y mostrar un gráfico de cuántos valores positivos y negativos
fueron ingresados:
La salida del programa debe mostrar la palabra más larga y la más corta que
fueron ingresadas por el usuario.
>>> len('amarillo')
8
Piezas de dominó
Desarrolle un programa que permita determinar la cantidad total de puntos que
contiene un juego de dominó de 28 piezas.
Además, recuerde que en el dominó cada lado de una pieza toma valores entre
0 y 6 y que, por ejemplo, la pieza cuyos lados toman valores 1 y 4 es la misma
que la pieza con valores 4 y 1.
Lanzar dados
Escriba un programa que muestre todas las combinaciones posibles al momento
de lanzar dos dados de 6 caras:
1 1
1 2
1 3
1 4
1 5
1 6
2 1
2 2
2 3
2 4
2 5
2 6
3 1
3 2
3 3
3 4
3 5
3 6
4 1
4 2
4 3
4 4
4 5
4 6
5 1
5 2
5 3
5 4
5 5
5 6
6 1
6 2
6 3
6 4
6 5
6 6
s = 0
t = 0
for i in range(3):
for j in range(3):
s = s + 1
if i < j:
t = t + 1
print t
print s
s = 0
t = 0
for i in range(3):
for j in range(3):
s = s + 1
if i < j:
t = t + 1
print t
print s
s = 0
t = 0
for i in range(3):
for j in range(3):
s = s + 1
if i < j:
t = t + 1
print t
print s
Ruteos varios
Solácese ruteando los siguientes programas.
j = 2
c = 1
p = True
while j > 0:
j = j - c
if p:
c = c + 1
p = not p
print j < 0 and p
a = 10
c = 1
x = 0
y = x + 1
z = y
while z <= y:
z = z + c
y = 2 * x + z
if y < 4:
y = y + 1
x = x - 1
print x, y, z
a = 11
b = a / 3
c = a / 2
n = 0
while a == b + c:
n += 1
b += c
c = b - c
if n % 2 == 0:
a = 2 * a - 3
print 100 * b + c
a = True
b = '1'
c = 2
while b[-1] not in '378':
a = 0 == len(b) % 2
if a:
c = c * 7
b = b + str(c)
print c
Dígitos
Escriba un programa que determine la cantidad de dígitos en un número entero
ingresado por el usuario:
Dígito verificador
Desarrolle un programa que calcule el dígito verificador de un rol UTFSM.
1×2+4×3+3×4+2×5+1×6+0×7+1×2+0×3+2×4=521×2+4×3+3×4+2×5+1×6+0×
7+1×2+0×3+2×4=52
52 % 11 = 8
11 − 8 = 3
Ingrese a: 0
Ingrese b: 3
Sin solucion
Ingrese a: 4
Ingrese b: 2
Caballo de ajedrez
Un tablero de ajedrez es una grilla de 8 × 8 casillas. Cada celda puede ser
representada mediante las coordenadas de su fila y su columna, numeradas
desde 1 hasta 8.
Posicion invalida.
Media armónica
La media armónica de una secuencia de nn números
reales x1,x2,…,xnx1,x2,…,xn se define como:
H=n1x1+1x2+1x3+…+1xnH=n1x1+1x2+1x3+…+1xn
Desarrolle un programa que calcule la media armónica de una secuencia de
números.
El programa primero debe preguntar al usuario cuántos números ingresará. A
continuación, pedirá al usuario que ingrese cada uno de los nn números reales.
Finalmente, el programa mostrará el resultado.
Cuantos numeros: 3
n1 = 1
n2 = 3
n3 = 2
H = 1.63636363636363636363
Números palíndromos
Un número natural es un palíndromo si se lee igual de izquierda a derecha y de
derecha a izquierda.
Palabras palíndromas
Así como hay números palíndromos, también hay palabras palíndromas, que
son las que no cambian al invertir el orden de sus letras.
Es palindromo
Ingrese palabra: rascar
No es palindromo
Es palindromo
Ingrese oracion: eva usaba rimel y le miraba suave
Es palindromo
Ingrese oracion: puro chile es tu cielo azulado
No es palindromo
Cachipún
En cada ronda del juego del cachipún, los dos competidores deben elegir entre
jugar tijera, papel o piedra.
Las reglas para decidir quién gana la ronda son: tijera le gana a papel, papel le
gana a piedra, piedra le gana a tijera, y todas las demás combinaciones son
empates.
A: tijera
B: papel
1 - 0
A: tijera
B: tijera
1 - 0
A: piedra
B: papel
1 - 1
A: piedra
B: tijera
2 - 1
A: papel
B: papel
2 - 1
A: papel
B: piedra
3 - 1
A es el ganador
Números primos
Un número primo es un número natural que sólo es divisible por 1 y por sí
mismo.
17 es primo
Ingrese un numero: 221
221 es compuesto
3. Escriba un programa que muestre los números primos menores que mm,
donde mm es ingresado por el usuario:
Primos menores que: 19
2
3
5
7
11
13
17
6. La conjetura de Goldbach sugiere que todo número par mayor que dos
puede ser escrito como la suma de dos números primos. Hasta ahora no
se conoce ningún número para el que esto no se cumpla.
Muestre sólo una de las maneras de escribir cada suma (por ejemplo, si
muestra 61 + 271, no muestre 271 + 61).
El mejor número
Según Sheldon, el mejor número es el 73.
73 es el 21er número primo. Su espejo, 37, es el 12mo número primo. 21 es el
producto de multiplicar 7 por 3. En binario, 73 es un palíndromo: 1001001.
Adivinar el número
Escriba un programa que «piense» un número entre 0 y 100, y entregue
pistas al usuario para que lo adivine.
El programa puede obtener un número al azar entre 0 y 100 de la
siguiente manera (¡haga la prueba!):
>>> from random import randrange
>>> n = randrange(101)
>>> print n
72
El usuario debe ingresar su intento, y el programa debe decir si el
número pensado es mayor, menor, o el correcto:
Adivine el numero.
Intento 1: 32
Es mayor que 32
Intento 2: 80
Es menor que 80
Intento 3: 70
Es mayor que 70
Intento 4: 72
Correcto. Adivinaste en 4 intentos.
Una vez que complete ese ejercicio, es hora de invertir los roles: ahora
usted pensará un número y el computador lo adivinará.
Escriba un programa que intente adivinar el número pensado por el
usuario. Cada vez que el computador haga un intento, el usuario debe
ingresar <, > o =, dependiendo si el intento es menor, mayor o correcto.
La estrategia que debe seguir el programa es recordar siempre cuáles son
el menor y el mayor valor posibles, y siempre probar con el valor que
está en la mitad. Por ejemplo, si usted piensa el número 82, y no hace
trampa al jugar, la ejecución del programa se verá así:
Intento 1: 50
>
Intento 2: 75
>
Intento 3: 88
<
Intento 4: 81
>
Intento 5: 84
<
Intento 6: 82
=
Adivine en 6 intentos B-)
Números de Fibonacci
Los números de Fibonacci FkFk son una sucesión de números naturales
definidos de la siguiente manera:
F0F1Fk=0,=1,=Fk−1+Fk−2,cuando k≥2.F0=0,F1=1,Fk=Fk−1+Fk−2,cuando k≥2.
En palabras simples, la sucesión de Fibonacci comienza con 0 y 1, y los
siguientes términos siempre son la suma de los dos anteriores.
nn 0 1 2 3 4 5 6 7 8 9 10 11 12 ...
FnFn 0 1 1 2 3 5 8 13 21 34 55 89 144 ...
2. Ingrese n: 11
F11 = 89
3. Escriba un programa que reciba como entrada un número entero e
indique si es o no un número de Fibonacci:
4. Ingrese un numero: 34
34 es numero de Fibonacci
Ingrese un numero: 78
78 no es numero de Fibonacci
6. Ingrese m: 7
7. Los 7 primeros numeros de Fibonacci son:
0 1 1 2 3 5 8
Espiral
Ejercicio sacado de Project Euler.
21 22 23 24 25
20 7 8 9 10
19 6 1 2 11
18 5 4 3 12
17 16 15 14 13
Ingrese multiplicador: 37
Ingrese multiplicando: 12
Resultado: 444
Números amistosos
Un par de números m y n son llamados amistosos (o se conocen como un par
amigable), si la suma de todos los divisores de m (excluyendo a m) es igual al
número n, y la suma de todos los divisores del número n (excluyendo a n) es
igual a m (con m ≠ n).
Por ejemplo, los números 220 y 284 son un par amigable porque los únicos
números que dividen de forma exacta 220 son 1, 2, 4, 5, 10, 11, 20, 22, 44, 55 y
110, y
1 + 2 + 4 + 5 + 10 + 11 + 20 + 22 + 44 + 55 + 110 = 284
Por lo tanto, 220 es un número amistoso. Los únicos números que dividen
exactamente 284 son 1, 2, 4, 71 y 142 y
1 + 2 + 4 + 71 + 142 = 220
Por lo tanto, 284 es un número amistoso.
Muchos pares de números amigables son conocidos; sin embargo, sólo uno de
los pares (220, 284) tiene valores menores que 1000. El siguiente par está en el
rango [1000, 1500].
Método de Newton
Ejercicio sacado de [Abel96] (fuente).
El método computacional más común para calcular raíces cuadradas (y otras
funciones también) es el método de Newton de aproximaciones sucesivas. Cada
vez que tenemos una estimación yy del valor de la raíz cuadrada de un
número xx, podemos hacer una pequeña manipulación para obtener una mejor
aproximación (una más cercana a la verdadera raíz cuadrada)
promediando yy con x/yx/y.
Por ejemplo, calculemos la raíz cuadrada de 2 usando la aproximación
inicial 2–√≈12≈1:
Estimació
Cuociente x/yx/y Promedio
n yy
11 2/1=22/1=2 (2+1)/2=1.5(2+1)/2=1.5
2/1.5=1.33332/1.5=1.33 (1.3333+1.5)/2=1.4167(1.3333+1.5)/2
1.51.5
33 =1.4167
1.41671.4 2/1.4167=1.41182/1.41 (1.4118+1.4167)/2=1.4142(1.4118+1.
167 67=1.4118 4167)/2=1.4142
1.41421.4
... ...
142
Triángulo de Pascal
Desarrolle un programa que dibuje un triángulo de Pascal, o sea, una
disposición de números enteros tales que cada uno sea la suma de los dos que
están por encima de él:
Torre y alfil
Este problema apareció en el certamen 1 del primer semestre de 2011.
Fila alfil: 7
Columna alfil: 6
Fila torre: 4
Columna torre: 3
Alfil captura
Fila alfil: 3
Columna alfil: 4
Fila torre: 7
Columna torre: 4
Torre captura
Fila alfil: 3
Columna alfil: 3
Fila torre: 8
Columna torre: 5
Ninguna captura
Suponga que los datos ingresados son válidos. Su programa debe funcionar
para tableros de cualquier tamaño.
Rango
Este problema apareció en el certamen 1 del primer semestre de 2011.
Reglamento de evaluaciones
Este problema apareció en el certamen 1 del segundo semestre de 2011 en el campus
Vitacura.
La Universidad Tropical Filomena Santa Marta ha instaurado un nuevo
reglamento de evaluaciones. Todas las asignaturas deben tener tres certámenes
y un examen. Las notas van entre 0 y 10, con un decimal.
Después de los tres certámenes, los alumnos con promedio menor que 3
reprueban y los con promedio mayor o igual que 7 aprueban. El resto va al
examen, en el que deben sacarse por lo menos un 5 para aprobar.
Además, para reducir el trabajo de los profesores, se decidió que los alumnos
que se sacan menos de un 2 en los dos primeros certámenes están
automáticamente reprobados. A su vez, los que obtienen más de un 9 en los dos
primeros certámenes están automáticamente aprobados. En ambos casos, no
deben rendir el tercer certamen.
C1: 1.8
C2: 0.9
Reprobado
C1: 0.5
C2: 2.0
C3: 2.5
Reprobado
C1: 1.5
C2: 3.5
C3: 4.5
Examen: 5.1
Aprobado
C1: 1.5
C2: 3.5
C3: 4.5
Examen: 4.9
Reprobado
C1: 9.3
C2: 9.4
Aprobado
Votaciones de la CONFECH
Este problema apareció en el certamen 1 del segundo semestre de 2011 en el campus
Vitacura.
Luego, para cada una de las universidades, el usuario debe ingresar el nombre
de la universidad y los votos de sus alumnos, que pueden
ser: aceptar (A), rechazar (R), nulo (N) o blanco (B). El término de la votación se
indica ingresando una X, tras lo cual se debe mostrar los totales de votos de la
universidad, con el formato que se muestra en el ejemplo.
Numero de universidades: 3
Universidad: USM
Voto: A
Voto: R
Voto: A
Voto: N
Voto: X
USM: 2 aceptan, 1 rechazan, 0 blancos, 1 nulos.
Universidad: UChile
Voto: A
Voto: B
Voto: A
Voto: X
UChile: 2 aceptan, 0 rechazan, 1 blancos, 0 nulos.
Universidad: PUC
Voto: A
Voto: R
Voto: R
Voto: A
Voto: X
PUC: 2 aceptan, 2 rechazan, 0 blancos, 0 nulos.
n: 3
Cantidad productos: 8
Precio producto 1: 400
Precio producto 2: 800
Precio producto 3: 500
Precio producto 4: 100
Precio producto 5: 400
Precio producto 6: 300
Precio producto 7: 200
Precio producto 8: 500
Total: 3200
Descuento: 420
Por pagar: 2780
Un analista financiero lleva un registro del precio del dólar día a día, y desea
saber cuál fue la mayor de las alzas en el precio diario a lo largo de ese período.
El programa debe entregar como salida cuál fue la mayor de las alzas de un día
para el otro.
Máquina de alimentos
Este problema apareció en el certamen recuperativo 1 del segundo semestre de 2011 en
el campus Vitacura.
Elija producto: A
Ingrese monedas:
100
10
50
100
100
Su vuelto:
50
10
10
10
10
Elija producto: B
Ingrese monedas:
100
100
100
100
Su vuelto:
50
10
Elija producto: C
Ingrese monedas:
100
100
50
10
100
10
10
10
Intersección de circunferencias
Este problema apareció en el certamen recuperativo 1 del segundo semestre de 2011 en
el campus Vitacura.
Una circunferencia en el plano está definida por tres valores: las coordenadas
(x, y) de su centro, y su radio r.
x1: 5
y1: 6
r1: 3.5
x2: 10
y2: 5
r2: 3
Se intersectan
x1: 3.5
y1: 5
r1: 2
x2: 10
y2: 4
r2: 3
No se intersectan
x1: 5
y1: 4.5
r1: 3
x2: 6
y2: 5
r2: 4.5
No se intersectan