Implemente una función divide(int a, int b, int c)
que imprima el valor base 10 de a/b
. sin utilizar ningún cálculos de coma flotante ni BigInteger
/ BigDecimal
o bibliotecas equivalentes de ningún tipo. Se deben imprimir al menos c
caracteres precisos dentro del conjunto de 0123456789.
, excepto la (posible) excepción en el punto 4 a continuación.
a
yb
puede ser cualquier número entero de 32 bits. Actualización: si, para fines de golf, desea que la entrada sea primitiva de 64 bits, está bien, pero no necesita admitir todo el rango de datos de 64 bits.- No necesita verificar que
c
sea positivo (aunque es de esperar que su programa no se bloquee) si no lo es. - El límite superior mínimo admitido para
c
es500
. Está bien si su programa no admite valores dec
arriba500
, pero también está bien si lo hace. - Para números que se dividen en partes iguales, usted elige si desea imprimir ceros adicionales (según el valor de
c
) o nada. - No necesita poder utilizar la función para realizar otras tareas con el cociente, el único objetivo es imprimir.
- Para los números entre
-1
y1
, es su elección si imprime un encabezado0
. Sin embargo, este es el único escenario donde la impresión de un cero inicial es aceptable, y solo puede imprimir uno de esos cero. - Puede usar cualquier lógica de redondeo / piso / techo que prefiera para el último decimal.
- Para una respuesta negativa, debe imprimir un encabezado
-
. Esto no cuenta parac
. Sin embargo, es su elección si desea imprimir,
+
o nada por una respuesta positiva. - La división entera y el módulo entero están permitidos. Sin embargo, tenga en cuenta que está restringido a primitivas, a menos que elija implementar su propia
BigInteger
/BigDecimal
biblioteca que cuenta en función de la longitud de su código. - No necesita manejar el
b
ser0
, aunque puede hacerlo si lo desea. Su programa puede entrar en un bucle infinito o bloquearse sib=0
no será penalizado. - Ligero cambio de regla por comentario. Para asegurarse de que el campo de juego esté nivelado
a
yb
garantizado que sean enteros de 32 bits, puede usar enteros de 64 bits. Si su idioma elegido va más allá de los enteros de 64 bits como primitivo, en ningún momento puede usar esa funcionalidad (pretenda que tiene un límite de 64 bits). - Otro punto que no está claro (sin embargo, no debería cambiar ninguna de las respuestas válidas actuales): aunque
c
puede interpretarse como el número de caracteres impresos o el número de espacios después del decimal, su programa debe usar dec
alguna manera relevante para decidir cuántos caracteres imprimir. En otras palabras,divide(2,3,2)
debería ser un resultado mucho más corto quedivide(2,3,500)
; no está bien imprimir 500 caracteres sin tener en cuentac
. - En realidad no me importa el nombre de la función.
d
Está bien para fines de golf.
Entrada
stdin
Se aceptan tanto una llamada de función como la lectura de . Si lees stdin
, cualquier carácter que no esté en el conjunto [-0123456789]
se considera un delimitador de argumento.
Salida
Caracteres a los stdout
descritos anteriormente.
Ejemplo
para divide(2,3,5)
, todos los siguientes son resultados aceptables:
0.666
0.667
.6666
.6667
0.666
0.667
.6666
.6667
+0.666
+0.667
+.6666
+.6667
Otro ejemplo: para divide(371,3,5)
lo siguiente son todos los resultados aceptables:
123.6
123.7
123.6
123.7
+123.6
+123.7
123.66666
123.66667
123.66666
123.66667
+123.66666
+123.66667
Y para divide(371,-3,5)
lo siguiente son todos aceptables:
-123.6
-123.7
-123.66666
-123.66667
92,3,5
la respuesta sería, por ejemplo,30.67