Реалізуйте функцію, divide(int a, int b, int c)
яка друкує базове значення 10 a/b
. без використання жодної математики з плаваючою точкою та BigInteger
/ BigDecimal
або еквівалентних бібліотек. Принаймні c
точні символи в наборі 0123456789.
повинні бути надруковані, за винятком (можливого) винятку в пункті 4 нижче.
a
іb
може бути будь-якими 32 бітовими цілими числами. Оновлення: Якщо для цілей гольфу ви хочете, щоб ваш вхід був 64-бітовим примітивом, це нормально, але вам не потрібно підтримувати весь 64-бітовий діапазон даних.- Вам не потрібно перевіряти, що
c
це позитивно (хоча, сподіваємось, ваша програма не виходить з ладу), якщо це не так. - Мінімальна підтримувана верхня межа для
c
-500
. Добре, якщо ваша програма не підтримує значення,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