티스토리 뷰
삼성SDS 알고리즘 문제집에 있길래 풀어봤따
소수 2개의 곱 p를주고 , p를 만드는 소수 a,b중 하나라도 k보다 작으면
BAD 아니면 GOOD을 출력한다
p는 넘넘크다 그래서 k까지 소수구하고 나눠보면 된다 ㅎㅎ
p는 크니까 string으로 받아야한다..!
소스코드
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 32 33 34 35 | #include <iostream> #include <algorithm> #include <string> #include <vector> using namespace std; const int MAXN = 1e6 + 3; bool check[MAXN]; vector<int> prime; string s; int k; bool go(int x) { int ret = 0; for (int i = 0; s[i]; i++) { ret *= 10; ret += (s[i] - '0'); ret %= x; } return ret == 0; } int main() { for (int i = 2; i < MAXN; i++) { if (!check[i]) { prime.push_back(i); for (int j = i*2; j < MAXN; j += i) check[j] = true; } } cin >> s >> k; for (int i = 0; i < prime.size(); i++) { if (prime[i] >= k) break; if (go(prime[i])) { printf("BAD %d\n", prime[i]); return 0; } } puts("GOOD"); } | cs |
'알고리즘 > BOJ' 카테고리의 다른 글
[백준] 2206 벽 부수고 이동하기 (0) | 2019.08.27 |
---|---|
[백준] 1194 달이 차오른다, 가자. (0) | 2019.08.27 |
[백준] 12908 텔레포트 3 (0) | 2018.07.23 |
[백준] 12875 칙령 (0) | 2018.07.23 |
[백준] 12914 곰을 위한 레스토랑 (0) | 2018.07.23 |
댓글