Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Algospot
- Dag
- backtracking
- Shortest path
- graph modeling
- Euler circuit
- mathematics
- GCD
- Sieve_of_Eratosthenes
- BFSDFS
- Greedy
- Cycle detecting
- bitmask
- graph
- Eulerian circuit
- POJ
- Segment Tree
- CS Academy
- scc
- 백준
- hashing
- implementation
- Euler path
- Eulerian path
- dynamic programming
- BST
- disjoint-set
- BOJ
- DynamicProgramming
- flows
Archives
- Today
- Total
그냥 하는 노트와 메모장
Algospot - 어린이날 (CHILDRENDAY) 본문
* Algospot - 어린이날 (CHILDRENDAY, https://algospot.com/judge/problem/read/CHILDRENDAY)
[ 분류 - BFS/ Mathematics ]
접근 방식이 다소 까다롭다.
N명 중 M이 하나씩 더 받기 위해선 N%ans = M이며 이 나머지에 대해 사이클이 존재함을 알아야 한다. 또한 이를 증명하는 페르마의 소정리에 대해 알고 있어야 한다.
* 접근 방법
1. 찾고자 하는 ans에 대해 N%ans = M이기 위해선 기저(시작 지점)은 숫자(한자리 수)부터 시작한다. 여기에 하나씩 이어붙이며 진행하는 BFS를 구성한다.
2. 나머지이기 때문에 후보를 [0, N]으로 줄일 순 없다. 적어도 하나 이상의 장남감을 줘야하기 때문에 [0, 2*N]가 후보가 된다. N과 같거나 큰 수는 정답의 후보가 된다. 이 부분이 적어도 하나 이상의 선물을 받을 수 있다는 여지를 주는 것이다. 따라서 N보다 크거나 같은 부분에 나머지가 M이 나오는 최초의 값이 답이 된다.
3. visited[]를 단순 배열이 아닌 이전 값을 쫓아 갈 수 있도록 소스를 구성한다. 이 부분은 최대유량(벨만)에 유용하게 사용되므로 익혀두면 좋다.
Comment : 1,3은 맞았으나 2.에서 범위를 [0, N]으로 두고 풀어서 결국 책을 본 문제다. 좀 아쉽다 ㅠ
- 코드
'Solved problems' 카테고리의 다른 글
BOJ 2549 - 루빅의 사각형 (0) | 2018.08.07 |
---|---|
Algospot - 정렬 게임(SORTGAME) (0) | 2018.07.03 |
BOJ 3987 - VOYAGER (보이저 1호) (0) | 2018.07.03 |
BOJ 6084 - Laserphones (레이저 통신) (0) | 2018.07.02 |
BOJ 5213 - TOTEM (과외맨) (0) | 2018.07.02 |
Comments