Zaimplementuj funkcję, divide(int a, int b, int c)
która wypisuje podstawową wartość 10 a/b
. bez korzystania z matematyki zmiennoprzecinkowej ani BigInteger
/ BigDecimal
lub równoważnych bibliotek. Należy wydrukować co najmniej c
dokładne znaki w zestawie 0123456789.
, z wyjątkiem (możliwego) wyjątku w punkcie 4 poniżej.
a
ib
mogą być dowolnymi 32-bitowymi liczbami całkowitymi. Aktualizacja: Jeśli do gry w golfa chciałbyś mieć 64-bitowe prymitywy, to jest w porządku, ale nie musisz obsługiwać całego 64-bitowego zakresu danych.- Nie musisz sprawdzać, czy
c
jest to pozytywne (choć mam nadzieję, że twój program nie ulega awarii), jeśli tak nie jest. - Minimalna obsługiwana górna granica dla
c
to500
. Jest w porządku, jeśli twój program nie obsługuje wartościc
powyżej500
, ale jest również w porządku, jeśli tak. - W przypadku liczb, które dzielą się równomiernie, wybierasz, czy chcesz wydrukować dodatkowe zera (na podstawie wartości
c
), czy nic. - Nie musisz być w stanie używać tej funkcji do wykonywania dalszych zadań z ilorazem, jedynym celem jest drukowanie.
- W przypadku liczb między
-1
i od1
Ciebie zależy, czy chcesz wydrukować wiodącą wartość0
. Jest to jednak jedyny scenariusz, w którym drukowanie wiodącego zera jest dopuszczalne i można wydrukować tylko jedno takie zero. - Możesz użyć dowolnej logiki zaokrąglania / podłogi / sufitu dla ostatniego miejsca po przecinku.
- W przypadku odpowiedzi negatywnej musisz wydrukować wiodącą
-
. To się nie liczyc
. Jednakże, jest to Twój wybór, jeśli chcesz wydrukować,
+
lub nic na pozytywną odpowiedź. - Dozwolone są zarówno dzielenie całkowite, jak i moduł całkowity. Pamiętaj jednak, że jesteś ograniczony do prymitywów, chyba że zdecydujesz się zaimplementować własną bibliotekę
BigInteger
/BigDecimal
bibliotekę, która liczy się do długości twojego kodu. - Nie musisz zajmować się
b
bytem0
, chociaż możesz, jeśli chcesz. Twój program może wejść w nieskończoną pętlę lub ulec awarii, jeślib=0
nie zostaniesz ukarany. - Niewielka zmiana reguły dla komentarza. Aby upewnić się, że pole gry jest poziom, natomiast
a
ib
są gwarancją 32-bitowe liczby całkowite, można użyć 64-bitowych długich liczb całkowitych. Jeśli wybrany język wykracza poza 64-bitowe liczby całkowite jako prymityw, nie możesz w żadnym momencie korzystać z tej funkcji (udawać, że jest ograniczony do 64 bitów). - Inna kwestia, która jest niejasna (nie powinna jednak zmieniać żadnej z aktualnych poprawnych odpowiedzi): chociaż
c
może być interpretowana albo jako liczba drukowanych znaków, albo liczba spacji po przecinku, twój program music
jakoś używać w odpowiedni sposób aby zdecydować, ile znaków do wydrukowania. Innymi słowy,divide(2,3,2)
wyjście powinno być znacznie krótsze niżdivide(2,3,500)
; wydrukowanie 500 znaków bez względu na to nie jest w porządkuc
. - Właściwie nie dbam o nazwę funkcji.
d
jest w porządku do gry w golfa.
Wejście
stdin
Akceptowane jest zarówno wywołanie funkcji, jak i odczyt . Jeśli czytasz z stdin
, dowolny znak spoza zestawu [-0123456789]
jest uważany za separator argumentu.
Wynik
Znaki stdout
jak opisano powyżej.
Przykład
ponieważ divide(2,3,5)
wszystkie z poniższych są dopuszczalnymi wynikami:
0.666
0.667
.6666
.6667
0.666
0.667
.6666
.6667
+0.666
+0.667
+.6666
+.6667
Kolejny przykład: dla divide(371,3,5)
następujących są wszystkie dopuszczalne wyniki:
123.6
123.7
123.6
123.7
+123.6
+123.7
123.66666
123.66667
123.66666
123.66667
+123.66666
+123.66667
I dla divide(371,-3,5)
następujących są wszystkie dopuszczalne:
-123.6
-123.7
-123.66666
-123.66667
92,3,5
zrobiłbyś, na przykład,30.67