값 n이 있다고 가정합니다. 4개의 다른 열에 처음 n개의 숫자(1에서 n까지)에 해당하는 Decimal, Octal, Hexadecimal 및 Binary를 인쇄해야 합니다. 우리가 알다시피, 우리는 10진수, 8진수, 16진수 및 10진수에 대해 각각 접두사 문자 d, o, X 및 b를 사용하여 숫자를 표현할 수 있습니다.
따라서 입력이 n =10과 같으면 출력은 다음과 같습니다.
1 1 1 12 2 2 103 3 3 114 4 4 1005 5 5 1016 6 6 1107 7 7 1118 10 8 10009 11 9 100110 12 A> 1010이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- l :=(n에 해당하는 이진 길이) - 2
- 1~n 범위의 i에 대해
- f :=빈 문자열
- "doXb"의 각 문자 c에 대해 do
- f가 비어 있지 않으면
- f :=f 공백 하나 연결
- f :=f + l을 문자열로 변환한 다음 c를 연결하여 오른쪽 정렬 형식화 문자열
- f가 비어 있지 않으면
- 포맷된 문자열 f에 i를 네 번 전달하고 줄을 인쇄합니다.
예
더 나은 이해를 위해 다음 구현을 살펴보겠습니다.
def solve(n):l =len(bin(n)) - 2 in range(1, n + 1):f ="" for c in "doXb":if f:f +=" " f +="{:>" + str(l) + c + "}" print(f.format(i, i, i, i))n =10solve(n)
입력
10
출력
1 1 1 12 2 2 103 3 3 114 4 4 1005 5 5 1016 6 6 1107 7 7 1118 10 8 10009 11 9 100110 12 A> 1010