문제
어떤 수와 그 수의 숫자 순서를 뒤집은 수가 일치하는 수를 팰린드롬이라 부른다. 예를 들어 79,197과 324,423 등이 팰린드롬 수이다.
어떤 수 N (1 ≤ N ≤ 1,000,000)이 주어졌을 때, N보다 크거나 같고, 소수이면서 팰린드롬인 수 중에서, 가장 작은 수를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 N이 주어진다.
출력
첫째 줄에 조건을 만족하는 수를 출력한다.
예제 입력 1
31 |
예제 출력 1
101 |
더보기
Solution
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
bool isPrime(int N)
{
if(N<2)
return false;
else if(N==2)
return true;
else if(N%2==0)
return false;
else
for(int i=3;i*i<=N;i+=2)
if(N%i==0)
return false;
return true;
}
bool isPalindrome(char *str,int length)
{
for(int i=0;i<length/2;i++)
if(str[i]!=str[length-1-i])
return false;
return true;
}
int main(void)
{
int N;
char str[8]={'\0', };
scanf("%d", &N);
sprintf(str,"%d",N);
while(!isPrime(N)||!isPalindrome(str,strlen(str)))
sprintf(str,"%d",++N);
printf("%d\n", N);
return 0;
}
728x90
'백준 알고리즘' 카테고리의 다른 글
<백준 알고리즘> 2156번: 포도주 시식 (0) | 2021.02.14 |
---|---|
<백준 알고리즘> 2193번: 이친수 (0) | 2021.02.13 |
<백준 알고리즘> 11051번: 이항 계수 2 (0) | 2021.02.08 |
<백준 알고리즘> 2579번: 계단 오르기 (0) | 2021.02.08 |
<백준 알고리즘> 2947번: 나무 조각 (0) | 2021.02.05 |