2011-12-14 2 views
1

인터뷰 질문 :분수를 문자열로 변환하고 반복 부분에 []를 삽입하십시오.

int N (분자)와 D (분모)가있는 경우 분수를 문자열로 반환하십시오. 분수가 반복되는 경우 반복되는 부분을 대괄호로 표시하십시오.

예 : 입력 : N = 1, D = 3 출력 : 0 [3]

예 : 입력 : N = 2, D = 5 출력 : 0.4

내 생각 :

두 값 A = N/D를 얻는다.

소수점 이하 부분에 대해서는 각 숫자를 x1 만큼 얻습니다. 반복되는 경우 색인을 기록하고 []을 (를) 마지막에 삽입하십시오.

는 소수점 이전의 경우,/10

더 좋은 아이디어로 각 숫자를 얻을?

감사합니다.

답변

4

전염병처럼 두 번 사용하지 마십시오. 유한 정밀도로 인해 정확한 답을 줄 수는 없습니다. 정수 계산에 충실하고 long division을 시뮬레이션하여 나머지를 추적합니다. 분자의 숫자가 없어지면 나머지 숫자의 기록을 유지하고 이미 기록에 남아있는 나머지를 보면 반복되는 순서에 도달했음을 알 수 있습니다. 그런 다음 괄호로 묶은 출력 부분을 구성 할 수 있습니다. (물론 나머지 숫자가 0 일 경우 대답은 종결되는 부분입니다.)

+0

예. 그리고 [다른 관련 질문에 대한이 대답의 코드] (http://stackoverflow.com/a/8455604/968261)는 분자와 분모 및 나머지의 긴 부분을 도울 수 있습니다. –

관련 문제