16진수 통계
시간 제한1초메모리 제한512 MB
16진수 문자열 S의 각 자리에 대해 16!개의 삭제 순서 전체에서 나타나는 16개 누적 합의 총합의 최솟값, 최댓값, 전체 합을 구한다.
문제
16진수로 표기된 정수 개가 수열 를 이룬다. 는 의 모든 원소를 더한 값이다.
16진수 숫자 16개를 한 번씩 나열한 순열을 라고 하자. 숫자 를 지운다는 것은 의 모든 원소에서 를 전부 지운다는 뜻이다. 남은 숫자는 순서를 그대로 지킨 채 다시 16진수로 읽고, 숫자가 하나도 남지 않은 원소는 0이 된다. 지운 뒤 맨 앞에 0이 와도 값은 달라지지 않는다.
의 순서대로 숫자를 하나씩 지우면서 매 단계의 수열을 기록하면 수열 16개를 얻는다. 를 에서 숫자 부터 까지 지운 결과라고 쓰면, 이 16개는 , , , 이고 마지막 수열은 모든 원소가 0이다. 여기서 다음과 같이 정의한다.
예를 들어 이고 가 , , 로 시작하면, 숫자 를 지운 는 이고 이어서 숫자 를 지운 는 이다.
는 어떤 순열 를 쓰는지에 따라 달라진다. 16진수 숫자의 순열 개를 모두 고려해서 세 값을 구하라. 가장 작은 total, 가장 큰 total, 그리고 순열마다 얻은 total을 모두 더한 값이다. 세 번째 값은 3b9aca07으로 나눈 나머지를 출력한다. 이 수는 10진수로 이다. 앞의 두 값은 나머지를 취하지 않고 그대로 출력한다.
입력
첫째 줄에 수열의 길이 이 주어진다. 다음 개의 줄에는 수열 의 원소 가 입력 순서대로 한 줄에 하나씩 주어진다. 을 포함해 입력의 모든 수는 소문자를 쓰는 16진수다.
제한
출력
한 줄에 세 정수를 공백 하나로 구분해 소문자 16진수로 출력한다. 차례대로 가장 작은 total, 가장 큰 total, 그리고 개 순열의 total을 모두 더한 값을 3b9aca07으로 나눈 나머지다.