Título: [NOIP1999] Números Palíndromo Título Descripción Si un número (el primer dígito no es cero) se lee igual de izquierda a derecha o de derecha a izquierda, lo llamaremos
Esta pregunta también es muy simple. Simplemente prueba algunas habilidades básicas de programación y no es nada difícil. Siempre que tenga cuidado, podrá obtener puntos fácilmente por esta pregunta.
Los números aquí se representan mediante cadenas (por supuesto, también son posibles otros métodos) porque son fáciles de procesar.
La suma basada en N es lo más destacado de esta pregunta. El procesamiento es el siguiente:
1) Carácter -> Número, puede usar matrices para simplificar el programa, es decir, matrices de dígitos y caracteres
2) Haga la suma, conserve los dígitos y transporte los bits, tal como desea hacer una suma de alta precisión.
g es llevar.
const
paso:integer=0;
chars:array[0..15] of char=('0','1',' 2','3','4','5','6','7','8','9','A','B','C','D','E' ,'F');
var
digit:array[char] de entero;
i,n,g:integer;
m,s:string;
ok:boolean;
comenzar
para i:=0 a 9 hacer digit[char(ord('0 ')+i)]:=i;
para i:=0 a 5 haga dígito[char(ord('A')+i)]:=i+10;
escribir('n='); readln(n);
escribir('m='); readln(s);
para i:=1 a longitud( s) hacer s[i]:=upcase(s[i]);
repetir
ok:=true;
para i:=1 a longitud(es) div 2 hacer
si s[i]<>s[longitud(es)+1-i] entonces está bien:=false;
si está bien entonces romper;
inc(paso);
m:=s; g:=0;
para i:=longitud(m) hasta 1 hacer
comenzar
s[i]:=caracteres[(dígito[m[i]]+dígito[m[longitud(m)+1-i]]+g) mod n];
g:=(dígito[m[i]]+dígito[m[longitud(m)+1-i]]+g) div n;
fin; p> p>
si g>0 entonces s:=chars[g]+s;
hasta el paso>=30;
si está bien, entonces
writeln('STEP=',paso)
else
writeln('Imposible');
end.
No problema por favor Aceptado, por favor pregunte si tiene alguna pregunta.