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/ BigDecimalou de bibliothèques équivalentes. Au moins cdes caractères précis dans l'ensemble de 0123456789.doivent être imprimés, à l'exception de l'exception (possible) du point 4 ci-dessous.
aetbpeut ê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
cc'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
cest500. Ce n'est pas grave si votre programme ne prend pas en charge les valeurscci500- 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
-1et1, 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/BigDecimalbibliothè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
aetbsont 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
cpuisse être interprété comme le nombre de caractères imprimés ou le nombre d'espaces après la décimale, votre programme doit utilisercd'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.
dest correct pour le golf.
Contribution
Un appel de fonction et une lecture stdinsont 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 stdoutcomme 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,5la réponse serait, par exemple,30.67