Thực hiện một chức năng divide(int a, int b, int c)
in giá trị cơ sở 10 của a/b
. không sử dụng bất kỳ thư viện dấu phẩy động cũng như BigInteger
/ BigDecimal
hoặc thư viện tương đương nào. Ít nhất c
các ký tự chính xác trong bộ 0123456789.
phải được in, ngoại trừ ngoại lệ (có thể) ở điểm 4 bên dưới.
a
vàb
có thể là bất kỳ số nguyên 32 bit nào. Cập nhật: Nếu, cho mục đích chơi gôn, bạn muốn có đầu vào là 64 bit nguyên thủy thì không sao, nhưng bạn không cần phải hỗ trợ toàn bộ phạm vi dữ liệu 64 bit.- Bạn không cần kiểm tra xem điều đó
c
có tích cực không (mặc dù hy vọng chương trình của bạn không gặp sự cố) nếu không. - Giới hạn trên được hỗ trợ tối thiểu
c
là500
. Không sao nếu chương trình của bạn không hỗ trợ các giá trịc
ở trên500
, nhưng cũng không sao nếu có. - Đối với các số chia đều, lựa chọn của bạn là in các số 0 bổ sung (dựa trên giá trị của
c
) hoặc không có gì. - Bạn không cần phải có khả năng sử dụng chức năng để thực hiện bất kỳ nhiệm vụ nào nữa với thương số, mục tiêu duy nhất là in ấn.
- Đối với các số giữa
-1
và1
, bạn có nên chọn hàng đầu hay không0
. Tuy nhiên, đây là tình huống duy nhất mà việc in số 0 đứng đầu được chấp nhận và bạn chỉ có thể in một số không như vậy. - Bạn có thể sử dụng bất kỳ logic làm tròn / sàn / trần nào bạn thích cho vị trí thập phân cuối cùng.
- Đối với một câu trả lời tiêu cực, bạn phải in một hàng đầu
-
. Điều này không được tính vàoc
. Tuy nhiên, nó là sự lựa chọn của bạn nếu bạn muốn in,
+
hoặc không có gì cho một câu trả lời tích cực. - Phân chia số nguyên và mô đun số nguyên đều được cho phép. Tuy nhiên, hãy nhớ rằng bạn bị hạn chế đối với các nguyên thủy, trừ khi bạn chọn triển khai thư viện
BigInteger
/BigDecimal
thư viện riêng của mình , tính theo chiều dài mã của bạn. - Bạn không cần phải xử lý
b
là0
, mặc dù bạn có thể nếu bạn muốn. Chương trình của bạn có thể nhập một vòng lặp vô hạn hoặc sự cố, nếub=0
, và bạn sẽ không bị phạt. - Thay đổi quy tắc nhẹ trên mỗi bình luận. Để đảm bảo sân chơi bình đẳng, trong khi
a
vàb
được đảm bảo là số nguyên 32 bit, bạn có thể sử dụng số nguyên dài 64 bit. Nếu ngôn ngữ được chọn của bạn vượt quá số nguyên 64 bit dưới dạng nguyên thủy, thì tại bất kỳ thời điểm nào bạn cũng không thể sử dụng chức năng đó (giả sử ngôn ngữ đó được giới hạn ở mức 64 bit). - Tuy nhiên, một điểm khác không rõ ràng (không nên thay đổi bất kỳ câu trả lời hợp lệ hiện tại nào): mặc dù
c
có thể được hiểu là số lượng ký tự được in hoặc số khoảng trắng sau dấu thập phân, chương trình của bạn phải sử dụngc
cách nào đó theo cách phù hợp để quyết định có bao nhiêu ký tự để in. Nói cách khác,divide(2,3,2)
nên đầu ra ngắn hơn nhiều so vớidivide(2,3,500)
; Không thể in 500 ký tự mà không quan tâm đếnc
. - Tôi thực sự không quan tâm đến tên của chức năng.
d
là ổn cho mục đích chơi golf.
Đầu vào
Cả một cuộc gọi chức năng và đọc từ stdin
được chấp nhận. Nếu bạn đọc từ stdin
, bất kỳ ký tự nào không có trong bộ [-0123456789]
đều được coi là dấu phân cách đối số.
Đầu ra
Nhân vật stdout
như được mô tả ở trên.
Thí dụ
cho divide(2,3,5)
, tất cả những điều sau đây là đầu ra chấp nhận được:
0.666
0.667
.6666
.6667
0.666
0.667
.6666
.6667
+0.666
+0.667
+.6666
+.6667
Một ví dụ khác: cho divide(371,3,5)
các mục sau đây là tất cả các đầu ra có thể chấp nhận:
123.6
123.7
123.6
123.7
+123.6
+123.7
123.66666
123.66667
123.66666
123.66667
+123.66666
+123.66667
Và đối với divide(371,-3,5)
những điều sau đây đều được chấp nhận:
-123.6
-123.7
-123.66666
-123.66667
92,3,5
trả lời, chẳng hạn,30.67