무의미한 원소

시간 제한2초메모리 제한128 MB

요약
인접한 원소의 합으로 배열을 반복해 하나의 값만 남을 때까지 줄이고 m으로 나눈 나머지를 구할 때, 최종 값에 영향을 주지 않는 원래 위치를 모두 찾는다.
난이도

보통10점 중 7점

유형
수학, 정수론, 조합론, 구현
정답자
아직 제출이 없습니다

문제

조지는 00부터 m−1m-1까지의 정수를 하나 만들어 내는 유사 난수 생성 방법을 실험하고 있다.

먼저 nn을 정하고, 각각 00 이상 m−1m-1 이하인 정수 a1,a2,…,ana_1, a_2, \ldots, a_n을 nn개 생성한다. 그런 다음 현재 수열을 인접한 두 원소의 합으로 이루어진 수열로 바꾸는 과정을 반복한다. 즉 a1,a2,…,ana_1, a_2, \ldots, a_n에서 a1+a2,a2+a3,…,an−1+ana_1 + a_2, a_2 + a_3, \ldots, a_{n-1} + a_n(n−1n-1개)을 만들고, 같은 과정을 수가 하나만 남을 때까지 반복한다. 마지막에 남은 수를 mm으로 나눈 나머지가 이 방법의 결과이다.

이 방법의 약점은 최종 결과가 처음 생성한 수들 중 일부에 전혀 영향을 받지 않을 때가 있다는 것이다. 예를 들어 n=3n = 3, m=2m = 2이면 결과는 a2a_2에 전혀 의존하지 않는다.

다른 수들을 어떻게 고르더라도 최종 결과가 aia_i에 전혀 의존하지 않을 때, ii번째 원소를 무의미하다고 하자. nn과 mm이 주어질 때, 어떤 원소들이 무의미한지 구하여라.

입력

정수 nn과 mm이 한 줄에 주어진다 (1≤n≤100 0001 \le n \le 100\,000, 2≤m≤1092 \le m \le 10^9).

출력

첫째 줄에 무의미한 원소의 개수를 출력한다. 둘째 줄에 무의미한 원소들의 번호 ii를 오름차순으로 공백 하나로 구분하여 출력한다. 무의미한 원소가 없으면 둘째 줄은 빈 줄로 출력한다.

예제1

  1. 예제 1

    입력
    3 2
    
    예상 출력
    1
    2