목록Codeforce (2)

문제를 이해한 후 input/ output을 보면 먼저 짝수일 경우에만 답이 존재한 다는 것을 알 수 있다. 또한 gcd 이므로 일정한 규칙에 영향을 받아 갯수가 정해질텐데.... 라는 생각으로 정답을 소인수 분해 해보면 규칙을 찾을 수 있다. input이 2 일 경우 정답 : 1^2 input이 4 일 경우 정답 : 1^2 * 2^2 input이 6일경우 정답 : 1^2 * 2^2 * 3^2 라는 규칙을 찾을 수 있다. 이후 큰 값에 의해 모듈러 연산을 수행해야 하는데, 이 경우 아래 코드처럼 해야 한다. 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 36 37 38 39 40 ..

참... 문제가... 이해하기 어려워서 한참 걸렸다... 010 이 있으면, "01","10"은 남여 수가 같으므로 패스, "010"은 남자가 적으므로 문제에 위반 된다. 이 경우 0110으로 만들어주어야 한다. 처음엔 브루트 포스를 써야 하나 했지만 그럴 경우 무조건 runtime에 잡힌다. 따라서 규칙을 좀 찾아보면, 1. 00 이 나올 경우 사이에 11을 넣어주어야 한다. 2. 010 이 나올 경우 사이에 1을 넣어주어야 한다. 위 두 규칙만 지키면 되므로, 입력의 앞쪽 부터 위 두개의 갯수를 찾으면 된다. 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 36 37 38 39 ..