아름다운 줄
시간 제한3초메모리 제한256 MB
주어진 수를 모두 나열할 때 이웃한 두 수가 이진수나 삼진수에서 1 개수가 같은 서로 다른 행 개수를 셉니다.
문제
알리아미르가 정수 개를 한 줄로 늘어놓았다. 이웃한 두 수가 언제나 이진법에서 1의 개수가 같거나 삼진법에서 1의 개수가 같으면, 그 줄을 아름다운 줄이라고 한다.
이진법에서 1의 개수는 그 수를 2진수로 적었을 때 숫자 1인 자리의 개수이고, 삼진법에서 1의 개수는 3진수로 적었을 때 숫자 1인 자리의 개수이다. 예를 들어 는 2진수로 이라 1이 두 개이고, 3진수로 라 1이 한 개이다. 은 두 진법 모두 1의 개수가 이다.
주어진 수를 모두 사용해 만들 수 있는 아름다운 줄이 몇 가지인지 세어라. 같은 값이 여러 번 주어지기도 하며, 늘어놓은 결과가 수열로서 같으면 한 가지로 센다.
입력
첫째 줄에 정수 이 주어진다. ()
둘째 줄에 정수 개가 공백으로 구분되어 주어진다. 각 수는 이상 이하이다.
출력
주어진 수를 모두 늘어놓아 만들 수 있는 아름다운 줄의 개수를 한 줄에 출력한다. 답은 최대 이라 64비트 정수 범위에 들어간다.
설명
첫 번째 예제에서 는 3진수로 , 은 3진수로 이라 1의 개수가 같다. 또 는 2진수로 , 은 2진수로 이라 1의 개수가 같다. 그래서 아름다운 줄은 1 5 6과 6 5 1 두 가지이다.