2019. 10. 21. 04:16, 알고리즘/BOJ
https://www.acmicpc.net/problem/15293
NEERC 2017 기출인데 솔직히 만약 대회 중이었다면 이 문제는 무조건 버렸어야 한다고 생각합니다. 물론 로씨아 형님들은 강해서 무려 3팀이나 이걸 풀었지만..
1도 감이 안와 홈페이지에서 풀이를 찾아봤습니다. $N$이 42정도면 그냥 MITM으로 해결하고, $N$이 42보다 크면 $a[0]$이 $2^{64-N}$보다 작아야한다는 점을 이용해 $r$의 후보들을 구하고 해당 $r$에서 super increasing sequence가 되는지 체크하면 됩니다. inverse를 구할 때 __int128을 쓰면 시간초과가 발생하고 오일러 파이를 이용해야 합니다.
나름 암호학 전공하겠다는 사람인데 안풀고가긴 섭섭해서 풀고 가지만 정말 쉽지 않은 문제였습니다. 참고로 같은 대회에 RSA 부채널 공격도 나왔습니다. 정말 미친 것 같습니다. 참고로 $q = 2^{64}$로 제한되지 않은 Knapsack Cryptosystem도 P algorithm이 있다고 하네요.
'알고리즘 > BOJ' 카테고리의 다른 글
[BOJ] 16977번: 히스토그램에서 가장 큰 직사각형과 쿼리 (0) | 2020.01.27 |
---|---|
[BOJ] 1933번: 스카이라인 (1) | 2019.12.03 |
[BOJ] 10167번: 금광 (0) | 2019.12.02 |
[BOJ] 15896번: &+ +& (0) | 2019.10.15 |
[BOJ] 17513번: Hilbert's Hotel (0) | 2019.10.15 |
[BOJ] 10464번: XOR (0) | 2019.09.12 |
Comments