문제 링크입니다: https://www.acmicpc.net/problem/2153
문제를 잘 읽어야하는 문제였습니다.
해당 문제에서는 1도 소수로 간주하기 때문에 에라토스테네스의 체 함수를 진행할 때 minFactor[0]만 -1로 초기화해줘야합니다.
단순 에라토스테네스의 체 구현 문제였기 때문에 쉽게 풀 수 있는 문제였습니다.
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;
const int MAX = 52 * 20 + 10;
int minFactor[MAX];
void eratosthenes(void)
{
//이 문제에서는 1도 소수;;
minFactor[0] = -1;
for (int i = 1; i < MAX; i++)
minFactor[i] = i;
for (int i = 2; i < MAX; i++)
if (minFactor[i] == i)
for (int j = i * i; j < MAX; j += i)
if (minFactor[j] == j)
minFactor[j] = i;
}
int main(void)
{
ios_base::sync_with_stdio(0);
cin.tie(0);
string s;
cin >> s;
eratosthenes();
int result = 0;
for (int i = 0; i < s.length(); i++)
if (s[i] >= 'a')
result += (s[i] - 'a' + 1);
else
result += (s[i] - 'A' + 27);
if (minFactor[result] == result)
cout << "It is a prime word.\n";
else
cout << "It is not a prime word.\n";
return 0;
}
개발환경:Visual Studio 2017
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
'알고리즘 > BOJ' 카테고리의 다른 글
백준 1550번 16진수 (0) | 2018.12.01 |
---|---|
백준 1212번 8진수 2진수 (0) | 2018.12.01 |
백준 11286번 절댓값 힙 (0) | 2018.11.24 |
백준 11279번 최대 힙 (0) | 2018.11.24 |
백준 1927번 최소 힙 (0) | 2018.11.24 |