Zaimplementuj funkcję, divide(int a, int b, int c)która wypisuje podstawową wartość 10 a/b. bez korzystania z matematyki zmiennoprzecinkowej ani BigInteger/ BigDecimallub równoważnych bibliotek. Należy wydrukować co najmniej cdokładne znaki w zestawie 0123456789., z wyjątkiem (możliwego) wyjątku w punkcie 4 poniżej.
aibmogą 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
cjest to pozytywne (choć mam nadzieję, że twój program nie ulega awarii), jeśli tak nie jest. - Minimalna obsługiwana górna granica dla
cto500. Jest w porządku, jeśli twój program nie obsługuje wartościcpowyż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
-1i od1Ciebie 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/BigDecimalbibliotekę, która liczy się do długości twojego kodu. - Nie musisz zajmować się
bbytem0, chociaż możesz, jeśli chcesz. Twój program może wejść w nieskończoną pętlę lub ulec awarii, jeślib=0nie zostaniesz ukarany. - Niewielka zmiana reguły dla komentarza. Aby upewnić się, że pole gry jest poziom, natomiast
aibsą 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ż
cmoże być interpretowana albo jako liczba drukowanych znaków, albo liczba spacji po przecinku, twój program musicjakoś 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.
djest w porządku do gry w golfa.
Wejście
stdinAkceptowane 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 stdoutjak 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,5zrobiłbyś, na przykład,30.67