Đây là câu hỏi phỏng vấn mà tôi gặp: tìm K
chữ số đầu tiên của biểu diễn thập phân của 1/N
. Có vẻ như chúng ta chỉ cần tính toán 10^K/N
để giải quyết vấn đề. Nó có ý nghĩa không? Có vẻ như tôi đang thiếu thứ gì đó vì giải pháp quá dễ.Cách tìm chữ số K đầu tiên của biểu diễn thập phân của 1/N
Trả lời
Chỉ cần thực hiện lớp học chia dài:
int value = 1;
bool outputDecimalSeparator = false;
int digitsOutput = 1;
while(digitsOutput <= k) {
if (value == 0) {
Console.Write(0);
}
else {
if (value < n) {
Console.Write(0);
value *= 10;
}
else {
Console.Write(value/n);
value %= n;
}
}
if (outputDecimalSeparator == false) {
outputDecimalSeparator = true;
Console.Write('.');
}
digitsOutput++;
}
Console.WriteLine();
Các chi nhánh trên value == 0
là để phát hiện khi 1/n
có một đại diện chấm dứt dưới k
chữ số.
Ở đây, n
là mẫu số trong 1/n
và k
là số chữ số để in trong biểu thị thập phân của 1/n
.
Lưu ý rằng bằng cách thay đổi value *= 10
thành value *= b
bạn cũng có thể in biểu diễn b-ary của 1/n
.
Nếu nó là k chữ số đầu tiên, không phải là nó rất thẳng về phía trước để nhân tử số bởi 10^k và do đó nó trở nên dễ dàng hơn để chia cho N? Và nếu chúng ta cần câu trả lời, biểu diễn thập phân có nghĩa là, sau đó chúng ta sẽ kết thúc việc chia kết quả bằng 10^K lần nữa sao cho phép nhân trước đó vô hiệu hóa.
Đây cũng là câu hỏi mà OP đang hỏi, đây không phải là câu trả lời .. – user470379
@ user470379, OP có chút nhầm lẫn trong câu hỏi của anh ta. Nếu anh ta chỉ cần chữ số K đầu tiên, thì rất thẳng thắn khi chúng tôi làm điều đó để thuận tiện. –
Tính 10^K/N có thể cực kỳ tốn kém với số lượng lớn K và N nhỏ.
Đây có thể là gần hơn với giải pháp tốt: long division. Đó là cách chúng tôi sử dụng để chia số trước máy tính. :)
Rõ ràng, bạn chỉ nên thực hiện thuật toán này cho đến khi nó mang lại K chữ số.
- 1. Biểu diễn nhị phân của một số thập phân .NET
- 2. In biểu diễn thập lục phân của mảng char []
- 3. chữ k đầu tiên và cuối cùng của số n^n
- 4. Chữ cái đầu tiên của Javascript/jQuery chữ hoa đầu tiên với một số ngoại lệ?
- 5. Làm cách nào để tính toán giá trị của chữ số thứ i trong biểu diễn k-ary của một số?
- 6. Số thập phân trong nhập số của jQuery Mobile
- 7. Biểu diễn chuỗi Python của dữ liệu nhị phân
- 8. Làm tròn số thập phân của Excel?
- 9. Biểu diễn Hex của Euro Symbol €
- 10. LISP - chữ số sau dấu thập phân
- 11. lấy phần thập phân của số thập phân
- 12. Làm tròn số thập phân của Python
- 13. Cách đếm số chữ số thập phân trong Float?
- 14. Vòng 2 chữ số thập phân
- 15. Android - Vòng 2 chữ số thập phân
- 16. Cách viết hoa chữ cái đầu tiên của văn bản
- 17. Format đến hai chữ số thập phân
- 18. Có cách nào để diễn tả một int của chữ cái Postgres trong hệ thập lục phân không?
- 19. Số nguyên là hai chữ số thập phân trong Java
- 20. Số chữ số cho N ** K
- 21. In biểu diễn nhị phân của một char trong C
- 22. Xác định số chữ số thập phân bằng Python
- 23. Biểu diễn nhị phân trong C
- 24. Cách lấy chỉ mục của chữ số đầu tiên trong Chuỗi
- 25. Format loại đôi với số lượng tối thiểu của các chữ số thập phân
- 26. printf, sprintf in ít nhất hai chữ số thập phân
- 27. Cách lấy mười byte đầu tiên của tệp nhị phân
- 28. Có số thập phân, muốn cắt thành 2 chữ số thập phân nếu có
- 29. Tìm ngày đầu tiên của lịch
- 30. Kiểm soát số chữ số thập phân trong đầu ra in trong R
Nếu N là 3 thì sao? – Pointy
không hoạt động vì 1/8 == .125. Nếu k == 2 thì 10^2/8 = 12.5, điều này không giúp được gì. Câu trả lời bạn muốn là 25, đúng không? có lẽ tôi thấy điều này sai? –
3 cuối cùng? hoặc đầu tiên 3? ... Tôi hy vọng bạn biết có một số con số với biểu diễn có chữ số vô hạn ... 1/3, 1/9 –