수감실 나누기
시간 제한2초메모리 제한1024 MB
n명의 죄수를 k개의 양의 정수로 나누어 각 값의 XOR이 0이 되도록 합니다. 불가능하면 -1을 출력합니다.
문제
어젯밤 스파이더맨이 범죄자 명을 잡았다. 교도소는 이미 가득 찼기 때문에 쉴드의 항공모함에 수감하기로 했다. 닉 퓨리가 직접 범죄자들을 수감실에 나누어 배정하기로 했다.
항공모함에는 수감실이 개 있다. 닉은 범죄자를 무작위로 배정하고 싶지 않아서, 모든 수감실의 인원수에 대한 배타적 논리합()이 0이 되도록 전원을 나누려 한다. 정확히는 1번 수감실에 명, 2번 수감실에 명, ..., 번 수감실에 명을 보내려 하며, 다음 조건을 만족해야 한다.
빈 수감실을 두는 것은 의미가 없으므로 모든 는 0보다 커야 한다.
범죄자들이 이미 탈출 계획을 세우고 있으니 시간이 없다. 항공모함 사령관이 이 문제를 최대한 빨리 풀 수 있도록 도와 달라.
입력
첫 줄에 두 정수 , ()가 주어진다. 은 쉴드 항공모함에 있는 범죄자 수이고, 는 수감실 수이다.
출력
분할이 가능하면 한 줄에 양의 정수 개를 출력한다. 번째 수는 번째 수감실에 보낼 범죄자 수이다.
분할이 불가능하면 -1을 출력한다. 분할 방법이 여러 개라면 그중 아무거나 출력해도 된다.
힌트
배타적 논리합은 다음 진리표를 갖는 논리 연산이다.
여러 비트로 이루어진 수의 배타적 논리합은 비트별로 계산한다. 예를 들어 , , 이다.
자세한 내용은 https://ru.wikipedia.org/wiki/Сложение_по_модулю_2 에서 볼 수 있다.