알고리즘/BOJ

백준 2061번 좋은 암호

꾸준함. 2021. 4. 11. 23:48

문제 링크입니다: www.acmicpc.net/problem/2061

 

2061번: 좋은 암호

암호화 방식 중에는 소수를 이용하는 것들이 많다. 보통은 매우 큰 두 개의 소수를 선택하고, 두 소수를 곱한 값을 암호화에서의 키로 사용하고는 한다. 이러한 방법이 좋은 이유는 일반적으로

www.acmicpc.net

백준 1837번 암호제작(jaimemin.tistory.com/1663)과 동일한 문제였습니다.

 

#include <iostream>
#include <string>
#include <vector>
using namespace std;
const int MAX = 1000000 + 1;
int minFactor[MAX];
vector<int> primeNumbers;
void eratosthenes(int K)
{
minFactor[0] = minFactor[1] = -1;
for (int i = 2; i < K; i++)
{
minFactor[i] = i;
}
for (int i = 2; i*i < K; i++)
{
if (minFactor[i] == i)
{
for (int j = i * i; j < K; j += i)
{
if (minFactor[j] == j)
{
minFactor[j] = i;
}
}
}
}
for (int i = 2; i < K; i++)
{
if (minFactor[i] == i)
{
primeNumbers.push_back(i);
}
}
}
int main(void)
{
ios_base::sync_with_stdio(0);
cin.tie(0);
string p;
int K;
cin >> p >> K;
eratosthenes(K);
for (int primeNumber : primeNumbers)
{
int div = 0, temp = 1;
for (int i = p.length() - 1; i >= 0; i--)
{
div = (div + (p[i] - '0') * temp) % primeNumber;
temp *= 10;
temp %= primeNumber;
}
if (div == 0)
{
cout << "BAD " << primeNumber << "\n";
return 0;
}
}
cout << "GOOD\n";
return 0;
}
view raw .cpp hosted with ❤ by GitHub

 

개발환경:Visual Studio 2017

 

지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

반응형

'알고리즘 > BOJ' 카테고리의 다른 글

백준 2439번 별 찍기 - 2  (0) 2021.04.14
백준 2438번 별 찍기 - 1  (0) 2021.04.14
백준 2052번 지수연산  (0) 2021.04.09
백준 1975번 Number Game  (0) 2021.04.09
백준 21300번 Bottle Return  (2) 2021.04.08