← Back to List

1747번: 소수&팰린드롬 ↗

Solutions

C++14
743 B | 743 chars
#include <iostream>
#include <queue>
#include <deque>
#define M 1200000
using namespace std;
int N;
bool ar[11000000];
queue <int> que;
deque <int> Q;
bool f(int X)
{
	int x=X;
	while(!Q.empty()) Q.pop_back();
	while(x>0)
	{
		Q.push_back(x%10);
		x/=10;
	}
	while(!Q.empty())
	{
		if(Q.size()==1) return true;
		else 
		{
			if(Q.front()!=Q.back()) return false;
			else 
			{
				Q.pop_back();
				Q.pop_front();
			}
		}
	}
	return true;
}
int main()
{
	cin>>N;
	for(int x=1; x<=M; x++) ar[x]=true;
	ar[1]=false;
	for(int x=2; x<=M; x++)
	{
		if(ar[x])
		{	
			que.push(x);
			for(int y=x+x; y<=M; y+=x) ar[y]=false;
		}
	}
	while(!que.empty())
	{
		int A=que.front();
		que.pop();
		if(A>=N && f(A))
		{
			cout<<A;
			return 0;
		}
	}
	
}