Problema 3
Hackers y Crackers
hackers.pas, hackers.c, hackers.cpp
Problema
Se tiene el siguiente código:
Function check(checksum: integer; s: string): boolean;
var i, n, sum, index:integer;
begin
sum:= 1;
n:= length(s);
for i:= 1 to n do
begin
index:= ord(s[i]) -64;
sum:= sum + (index*n*i) + (index*i*i);
end;
if sum= checksum then
check:= true
else
check:= false;
end;
El código sirve para revisar si una contraseña es correcta a no. Se sabe que la contraseña está en mayúsculas y que no tiene más de cuatro letras. Dado el valor de checksum, encontrar todas las posibles contraseñas que cumplen.
Entrada
Un entero positivo n, 0 < n ≤ 531,441.
Salida
En el primer renglón la cantidad de posibles contraseñas que cumplen. El los siguientes renglones todas la contraseñas que cumplen ordenadas primero por tamaño y luego por orden lexicográfico.
Ejemplo
entrada | salida |
27 | 2 M FA |
1 | 0 |
Concurso: | 11a OMI, Aguascalientes - Examen de Selección. 23/Abril/2006 |
Propuesto por: | Pier Paolo Guillén Hernández |
Ayuda: | entradas, salidas, sugerencias |
Soluciones: | hackers.pas, hackers.c, hackers.cpp |