[Descripción del problema] Escriba un programa para convertir un número entero n en un número basado en b basado en b. Si n es negativo, el primer carácter de la cadena de salida es-. b es cualquier valor natural mayor que 1 y menor que 37. Cuando b = 2, los caracteres de salida solo pueden ser 0 y 1. Cuando b = 16, la cadena de salida puede contener caracteres 0-9, af (las letras se muestran en minúsculas). b también puede ser otros valores. Por ejemplo, ingrese n = 33, b = 17, entonces el valor hexadecimal de la salida 33 es "1g".
[Forma de entrada] La consola introduce enteros n y b, donde n puede ser negativo. nyb están separados por espacios.
[Forma de salida] La consola emite la cadena de caracteres convertida s.
[Entrada de muestra 1] 5 2
[Salida de muestra 1] 101
[Entrada de muestra 2] -8 8
[Salida de muestra 2 10 -10
[Descripción de la muestra] El binario de 5 es 101
[Estándar de puntuación]
#include <iostream>
#include <stack>
using namespace std;
void com (int x,int y,char a[])
{
stack<int> s;
while(x)
{
s.push(x%y);
x=x/y;
}
while(!s.empty())
{
cout<<a[s.top()];
s.pop();
}
}
int main()
{
char a[]={'0','1','2','3','4','5','6','7','8','9','0','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
int x,y;
cin>>x>>y;
if(x<0)
{
cout<<"-";
com(-x,y,a);
}
else
com(x,y,a);
return 0;
}