이 튜토리얼에서는 주어진 숫자가 두 개의 숫자 체계에서 회문인지 확인하는 프로그램을 작성할 것입니다.
우리는 다른 숫자 체계를 위한 숫자와 기초를 주었습니다. 주어진 숫자가 십진수 체계와 주어진 숫자 체계에서 회문인지 확인해야 합니다.
문제를 해결하는 단계를 살펴보겠습니다.
-
숫자와 숫자 체계 기반을 초기화합니다.
-
주어진 숫자가 십진수 체계에서 회문인지 확인하십시오.
-
숫자를 문자열 형식의 다른 숫자 체계로 변환합니다.
-
변환된 숫자가 회문인지 확인하세요.
-
주어진 숫자가 두 숫자 체계 모두에서 회문이면 예를 인쇄하십시오. 그렇지 않으면 아니요 .
예시
코드를 봅시다.
#include <bits/stdc++.h>
using namespace std;
string integer_to_string(int n, int base) {
string str;
while (n > 0) {
int digit = n % base;
n /= base;
str.push_back(digit + '0');
}
return str;
}
string isDoubleBasePalidrome(int n, int k) {
int temp = n;
int number_reverse = 0;
while (temp > 0) {
number_reverse = temp % 10 + number_reverse * 10;
temp /= 10;
}
if (number_reverse == n) {
// converting to base k
string str = integer_to_string(n, k);
string str_copy = str;
// reversing number in base k
reverse(str.begin(), str.end());
if (str == str_copy) {
return "Yes";
}
}
return "No";
}
int main() {
int n = 313, k = 2;
cout << isDoubleBasePalidrome(n, k) << endl;
return 0;
} 출력
위의 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.
Yes
결론
튜토리얼에서 질문이 있는 경우 댓글 섹션에 언급하세요.