Реализуйте функцию, divide(int a, int b, int c)
которая печатает базовое значение 10 a/b
. без использования математических и BigInteger
/ BigDecimal
или эквивалентных библиотек с плавающей запятой вообще. Должны быть напечатаны как минимум c
точные символы в наборе 0123456789.
, за исключением (возможного) исключения в пункте 4 ниже.
a
иb
может быть любыми 32-битными целыми числами. Обновление: если для целей игры в гольф вы хотите, чтобы входные данные были 64-битными примитивами, это нормально, но вам не нужно поддерживать весь 64-битный диапазон данных.- Вам не нужно проверять, что
c
является положительным (хотя, надеюсь, ваша программа не падает), если это не так. - Минимальная поддерживаемая верхняя граница для
c
IS500
. Это нормально, если ваша программа не поддерживает значенияc
выше500
, но это также нормально, если это так. - Для чисел, которые делятся поровну, вы можете выбрать, печатать ли дополнительные нули (в зависимости от значения
c
) или ничего. - Вам не нужно иметь возможность использовать эту функцию для выполнения каких-либо дальнейших задач с частным, единственная цель - печать.
- Для чисел между
-1
и1
, это ваш выбор, печатать ли ведущий0
. Однако это единственный сценарий, в котором допустима печать начального нуля, и вы можете напечатать только один такой ноль. - Вы можете использовать любую логику округления / пола / потолка, которую вы предпочитаете для последнего десятичного знака.
- Для отрицательного ответа вы должны напечатать ведущий
-
. Это не считается в сторонуc
. Тем не менее, это ваш выбор , если вы хотите, чтобы напечатать,
+
или ничего для положительного ответа. - Целочисленное деление и целочисленный модуль разрешены. Однако имейте в виду, что вы ограничены примитивами, если только вы не решите реализовать свою собственную
BigInteger
/BigDecimal
библиотеку, которая учитывает длину вашего кода. - Вам не нужно обращаться с
b
существом0
, хотя вы можете, если хотите. Ваша программа может войти в бесконечный цикл или аварийноb=0
завершить работу , если вы не будете оштрафованы. - Небольшое изменение правила за комментарий. Для того, чтобы убедиться , что игровое поле является уровень, в то время как
a
иb
гарантированно 32 - битные целые числа, вы можете использовать 64 битные длинные целые числа. Если выбранный вами язык выходит за пределы 64-битных целых чисел в качестве примитива, вы ни в коем случае не можете использовать эту функциональность (притворяться, что он ограничен 64-битными). - Еще один момент, который неясен (однако он не должен изменять ни один из текущих действительных ответов): хотя
c
его можно интерпретировать как число напечатанных символов или количество пробелов после десятичной дроби, ваша программа должнаc
каким-то образом использовать соответствующим образом решить, сколько символов печатать. Другими словами,divide(2,3,2)
должен быть намного короче, чемdivide(2,3,500)
; не нормально печатать 500 символов без учетаc
. - На самом деле меня не волнует название функции.
d
это нормально для целей игры в гольф.
вход
И вызов функции и чтение из stdin
принимаются. Если вы читаете из stdin
, любой символ, не входящий в набор [-0123456789]
, считается разделителем аргументов.
Выход
Персонажи stdout
как описано выше.
пример
для divide(2,3,5)
, все следующие являются приемлемыми результатами:
0.666
0.667
.6666
.6667
0.666
0.667
.6666
.6667
+0.666
+0.667
+.6666
+.6667
Другой пример: для divide(371,3,5)
следующего все приемлемые результаты:
123.6
123.7
123.6
123.7
+123.6
+123.7
123.66666
123.66667
123.66666
123.66667
+123.66666
+123.66667
И для divide(371,-3,5)
следующего все приемлемо:
-123.6
-123.7
-123.66666
-123.66667
92,3,5
ответ, например,30.67