8진수 또는 10진수 형식의 숫자가 있다고 가정합니다. 이것이 8진수 형태인 경우 회문인지 아닌지 확인하십시오. 10진수이면 8진수로 변환한 후 회문인지 확인하세요.
따라서 입력이 num =178과 같으면 숫자가 8진수 형식이 아니므로 출력은 True가 됩니다(8은 8진수로 유효한 기호가 아니지만 10진수로 유효함). 그런 다음 262인 8진수로 변환합니다. 회문.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- base :=num의 모든 숫자가 8보다 작으면 8, 그렇지 않으면 10
- oct_list :=새 목록
- num이 0이 아닌 동안 do
- oct_list 끝에 (num mod base) 삽입
- num :=(num / base)의 몫
- j :=oct_list의 크기 - 1
- k :=0
- k <=j, do
- oct_list[j]가 oct_list[k]와 같지 않으면
- 거짓을 반환
- j :=j - 1, k :=k + 1
- oct_list[j]가 oct_list[k]와 같지 않으면
- 참 반환
예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
def is_all_under_8(num): while num: if (num % 10) >= 8: return False else: num = int(num / 10) return True def solve(num): base = 8 if(is_all_under_8(num) == False) else 10 oct_list = [] while num != 0: oct_list.append(num % base) num = int(num / base) j = len(oct_list)-1 k = 0 while k <= j: if oct_list[j] != oct_list[k]: return False j-=1 k+=1 return True num = 178 print(solve(num))
입력
178
출력
True