문제
어떤 수를 왼쪽부터 읽어도, 오른쪽부터 읽어도 같을 때 이 수를 회문인 수라고 한다. 예를 들어, 747은 회문인 수이다. 255도 회문인 수인데, 16진수로 표현하면 FF이기 때문이다. 양의 정수를 입력받았을 때, 이 수가 어떤 B진법 (2 ≤ B ≤ 64)으로 표현하면 회문이 되는 경우가 있는지 알려주는 프로그램을 작성하시오. B진법이란, 한 자리에서 수를 표현할 때 쓸 수 있는 수의 가짓수가 B라는 뜻이다. 예를 들어, 십진법에서 B는 10이다.
입력
입력 데이터는 표준입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 테스트 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터는 64 이상 1,000,000 이하인 하나의 정수로 주어진다.
출력
출력은 표준출력을 사용한다. 하나의 테스트 데이터에 대한 답을 하나의 줄에 출력한다. 각 테스트 데이터에 대해, 주어진 수가 어떤 B진법 (2 ≤ B ≤ 64)으로 표현하여 회문이 될 수 있다면 1을, 그렇지 않다면 0을 출력한다.
Solved.ac 레벨
실버 V
풀이
#include <bits/stdc++.h>
using namespace std;
bool chkPanlindrome(int n){
for(int i = 2; i <= 64; i++){
int num = n;
string str;
string target_str;
while(num != 0){
str.push_back(num % i);
num /= i;
}
for(int i = str.length() - 1; i >= 0; i--){
target_str += str[i];
}
if(str == target_str){
return true;
}
}
return false;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int t;
cin >> t;
while(t--){
int n;
cin >> n;
if(chkPanlindrome(n)){
cout << 1 << "\n";
} else {
cout << 0 << "\n";
}
}
return 0;
}
'Study (etc) > Problem Solving' 카테고리의 다른 글
[BOJ / C++] 1094번 : 막대기 (0) | 2023.01.19 |
---|---|
[BOJ / C++] 1213번 : 팰린드롬 만들기 (0) | 2023.01.18 |
[BOJ / C++] 10101번 : 삼각형 외우기 (0) | 2023.01.18 |
[BOJ / C++] 1620번 : 나는야 포켓몬 마스터 이다솜 (0) | 2023.01.15 |
[BOJ / C++] 5532번 : 방학 숙제 (0) | 2023.01.14 |