티스토리 뷰

Algorithm/BOJ

백준 1990번 C++

poopooreum 2023. 8. 4. 17:44
반응형
백준 1990번 소수인펠린드롬

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

1990번: 소수인팰린드롬

151은 소수이면서 동시에 팰린드롬이기 때문에 소수인 팰린드롬이다. 팰린드롬이란 앞으로 읽어나 뒤로 읽으나 같은 수를 말한다. 예를 들어 1234는 앞으로 읽으면 1234지만, 뒤로 읽으면 4321이 되

www.acmicpc.net



정답 코드

#include<iostream>
#include<math.h>
using namespace std;
int arr[10000001];
int max1 = 10000000;
int find(int a) {
	int n = a;
	int sum = 0;
	while (1) {
		int x = n % 10;
		n /= 10;
		sum += x;
		if (n == 0)
			break;
		
		sum *= 10;
	}
	if (a == sum)
		return 1;
	else
		return -1;

}
int main() {
	for (int x = 2; x <= sqrt(max1); x++) {
		if (arr[x] != 0)
			continue;
		for (int y = x * x; y <= max1; y += x)
			arr[y] = 1;
	}
	int a, b,flag=0;
	cin >> a >> b;
	for (int x = a; x <= b; x++) {
		if (x >= 10000000)
			break;
		flag = -1;
		if (arr[x] == 0) {
			flag = find(x);
			if (flag == 1)
				cout << x << endl;
		}
	}
	cout << -1;


}


문제 풀이

소수는 에라토스테네스의 체를 이용해서 구했습니다.
그다음 펠린드롬은 반복문을 이용해서 소수를 거꾸로 뒤집었습니다. 수를 반대로 뒤집는 방식은 간단합니다.
sum변수 하나를 만든 후 주어진 수를 10으로 나눈 나머지를 sum변수에 더해주면서 주어진 수를 계속 10으로 나눠줍니다. 그리고 sum변수에 다시10을 곱해주고 입력받은 수가 0이 되면 반복문을 종료시킵니다.

반응형

'Algorithm > BOJ' 카테고리의 다른 글

백준 2003번 C++  (0) 2023.08.04
백준 1991번 C++  (0) 2023.08.04
백준 1978번 C++  (0) 2023.08.04
백준 1977번 C++  (0) 2023.08.03
백준 1940번 C++  (0) 2023.08.03
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함