Implémentez une fonction divide(int a, int b, int c)
qui imprime la valeur de base 10 de a/b
. sans utiliser de mathématiques en virgule flottante ni BigInteger
/ BigDecimal
ou de bibliothèques équivalentes. Au moins c
des caractères précis dans l'ensemble de 0123456789.
doivent être imprimés, à l'exception de l'exception (possible) du point 4 ci-dessous.
a
etb
peut être n'importe quel entier 32 bits. Mise à jour: si, à des fins de golf, vous souhaitez que les entrées soient des primitives 64 bits, cela est correct, mais vous n'avez pas besoin de prendre en charge toute la plage de données 64 bits.- Vous n'avez pas besoin de vérifier que
c
c'est positif (bien que nous espérons que votre programme ne plante pas) si ce n'est pas le cas. - La borne supérieure minimale prise en charge pour
c
est500
. Ce n'est pas grave si votre programme ne prend pas en charge les valeursc
ci500
- dessus , mais c'est également correct si c'est le cas. - Pour les nombres qui se divisent uniformément, vous avez le choix d'imprimer des zéros supplémentaires (basés sur la valeur de
c
) ou rien. - Vous n'avez pas besoin de pouvoir utiliser la fonction pour effectuer d'autres tâches avec le quotient, le seul objectif est l'impression.
- Pour les nombres entre
-1
et1
, vous avez le choix d'imprimer ou non un interligne0
. Cependant, c'est le seul scénario où l'impression d'un zéro de tête est acceptable et vous ne pouvez imprimer qu'un seul de ces zéro. - Vous pouvez utiliser n'importe quelle logique d'arrondi / plancher / plafond que vous préférez pour la dernière décimale.
- Pour une réponse négative, vous devez imprimer un interligne
-
. Cela ne compte pasc
. Cependant, il est de votre choix si vous souhaitez imprimer,
+
ou rien pour une réponse positive. - La division entière et le module entier sont tous deux autorisés. Cependant, gardez à l'esprit que vous êtes limité aux primitives, à moins que vous ne choisissiez d'implémenter votre propre
BigInteger
/BigDecimal
bibliothèque qui compte contre votre longueur de code. - Vous n'avez pas besoin de gérer l'
b
être0
, bien que vous puissiez le faire si vous le souhaitez. Votre programme peut entrer dans une boucle infinie, ou se bloquer, sib=0
, et vous ne serez pas pénalisé. - Léger changement de règle par commentaire. Pour vous assurer que le terrain de jeu est de niveau, alors que
a
etb
sont garantis comme étant des entiers 32 bits, vous pouvez utiliser des entiers longs 64 bits. Si votre langue choisie va au-delà des entiers 64 bits en tant que primitive, vous ne pouvez à aucun moment utiliser cette fonctionnalité (prétendre qu'elle est limitée à 64 bits). - Un autre point qui n'est pas clair (cependant, cela ne devrait changer aucune des réponses valides actuelles): bien qu'il
c
puisse être interprété comme le nombre de caractères imprimés ou le nombre d'espaces après la décimale, votre programme doit utiliserc
d'une manière pertinente d'une manière pertinente pour décider du nombre de caractères à imprimer. En d'autres termes, ladivide(2,3,2)
sortie devrait être beaucoup plus courte quedivide(2,3,500)
; il n'est pas correct d'imprimer 500 caractères sans tenir compte dec
. - En fait, je me fiche du nom de la fonction.
d
est correct pour le golf.
Contribution
Un appel de fonction et une lecture stdin
sont acceptés. Si vous lisez stdin
, tout caractère ne figurant pas dans l'ensemble [-0123456789]
est considéré comme un délimiteur d'argument.
Production
Caractères stdout
comme décrit ci-dessus.
Exemple
pour divide(2,3,5)
, toutes les sorties suivantes sont acceptables:
0.666
0.667
.6666
.6667
0.666
0.667
.6666
.6667
+0.666
+0.667
+.6666
+.6667
Un autre exemple: pour divide(371,3,5)
ce qui suit sont toutes les sorties acceptables:
123.6
123.7
123.6
123.7
+123.6
+123.7
123.66666
123.66667
123.66666
123.66667
+123.66666
+123.66667
Et pour divide(371,-3,5)
ce qui suit sont tous acceptables:
-123.6
-123.7
-123.66666
-123.66667
92,3,5
la réponse serait, par exemple,30.67