기록을 남기자
카테고리
작성일
2023. 4. 13. 23:06
작성자
ssun_bear
반응형

문제

https://www.acmicpc.net/problem/1747

 

1747번: 소수&팰린드롬

어떤 수와 그 수의 숫자 순서를 뒤집은 수가 일치하는 수를 팰린드롬이라 부른다. 예를 들어 79,197과 324,423 등이 팰린드롬 수이다. 어떤 수 N (1 ≤ N ≤ 1,000,000)이 주어졌을 때, N보다 크거나 같고,

www.acmicpc.net

어떤 수와 그 수의 숫자 순서를 뒤집은 수가 일치하는 수를 팰린드롬이라 부른다. 예를 들어 79,197과 324,423 등이 팰린드롬 수이다.

어떤 수 N (1 ≤ N ≤ 1,000,000)이 주어졌을 때, N보다 크거나 같고, 소수이면서 팰린드롬인 수 중에서, 가장 작은 수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 N이 주어진다.

출력

첫째 줄에 조건을 만족하는 수를 출력한다.

코드

import sys, math
input=sys.stdin.readline

visited=[False,False]+ [True]*(1005000)
for i in range(2,int(math.sqrt(1005001))+1):
    if visited[i]==True:
        for j in range(2*i,1005001, i):
            visited[j]=False

def check(n):
    tmp=str(n)
    tmp1=tmp[::-1]
    if tmp==tmp1: return 1
    else: return 0

n=int(input())

for i in range(n,1005001):
    if check(i)==1 and visited[i]==True:
        print(i)
        break

문제 해결

에라토스테네스의 체와 문자열 일치를 섞은 문제이다. 다만 이문제에서 주의 해야할 점은 1 ≤ N ≤ 1,000,000이다.

문제 조건은 N보다 크거나 같고, 소수이면서 팰린드롬인 수를 찾는 것이기 때문에 에라토스테네스의 체를 구할때 1000000보다 큰 수까지 체크해 줘야한다.(1003001가 다음 소수이면서 팰린드롬인수)

반응형