티스토리 뷰
문제링크 : https://www.acmicpc.net/problem/11068
#include <bits/stdc++.h>
using namespace std;
const int MOD = 1000000007;
bool isPanlindrome(int n)
{
for(int i=2; i<=64; i++) //해당 진법 변환
{
int tmp = n;
string s;
string str;
while(tmp!=0)
{
s.push_back(tmp%i);
tmp/=i;
}
str = s;
reverse(str.begin(), str.end()); //뒤집기
if(s==str) return 1; //팰린드롬 체크
}
return 0;
}
int main()
{
int T;
cin >> T;
while(T--)
{
int N;
cin >> N;
if(isPanlindrome(N)) cout << 1 << "\n";
else cout << 0 << "\n";
}
return 0;
}
입력받은 수에 대해서 2~64까지 각각의 진법으로 변환하여 계산하여 문자열에 저장하고,
해당 문자열을 뒤집은 문자열과 비교해 같은가 아닌가를 체크한다.
같다면 1을 아니면 0을 출력해주면 된다.
'백준 > 실버' 카테고리의 다른 글
[백준 32981번] 찐 Even Number (C++) (0) | 2025.06.04 |
---|---|
[백준 12871번] 무한 문자열 (C++) (0) | 2025.06.03 |
[백준 14912번] 숫자 빈도수 (C++) (0) | 2025.05.21 |
[백준 2705번] 팰린드롬 파티션 (C++) (0) | 2025.05.14 |
[백준 12849번] 본대 산책 (C++) (0) | 2025.05.07 |