16진수 문자열 S의 각 자리에 대해 16!개의 삭제 순서 전체에서 나타나는 16개 누적 합의 총합의 최솟값, 최댓값, 전체 합을 구한다.
보통7수학조합론정렬아직 제출이 없습니다시간 제한1초메모리 제한512 MB16진수로 표기된 정수 N개가 수열 S를 이룬다. sum(S)는 S의 모든 원소를 더한 값이다.
16진수 숫자 16개를 한 번씩 나열한 순열을 p라고 하자. 숫자 d를 지운다는 것은 S의 모든 원소에서 d를 전부 지운다는 뜻이다. 남은 숫자는 순서를 그대로 지킨 채 다시 16진수로 읽고, 숫자가 하나도 남지 않은 원소는 0이 된다. 지운 뒤 맨 앞에 0이 와도 값은 달라지지 않는다.
p의 순서대로 숫자를 하나씩 지우면서 매 단계의 수열을 기록하면 수열 16개를 얻는다. S[d1,…,dk]를 S에서 숫자 d1부터 dk까지 지운 결과라고 쓰면, 이 16개는 S[p1], S[p1,p2], …, S[p1,…,p16]이고 마지막 수열은 모든 원소가 0이다. 여기서 다음과 같이 정의한다.
total(S,p)=sum(S[p1])+sum(S[p1,p2])+⋯+sum(S[p1,…,p16])
예를 들어 S=[9af47c0b,2545557,ff6447979]이고 p가 4, 9, 5로 시작하면, 숫자 4를 지운 S[4]는 [9af7c0b,255557,ff67979]이고 이어서 숫자 9를 지운 S[4,9]는 [af7c0b,255557,ff677]이다.
total(S,p)는 어떤 순열 p를 쓰는지에 따라 달라진다. 16진수 숫자의 순열 16!개를 모두 고려해서 세 값을 구하라. 가장 작은 total, 가장 큰 total, 그리고 순열마다 얻은 total을 모두 더한 값이다. 세 번째 값은 3b9aca07으로 나눈 나머지를 출력한다. 이 수는 10진수로 109+7이다. 앞의 두 값은 나머지를 취하지 않고 그대로 출력한다.
첫째 줄에 수열의 길이 N이 주어진다. 다음 N개의 줄에는 수열 S의 원소 P가 입력 순서대로 한 줄에 하나씩 주어진다. N을 포함해 입력의 모든 수는 소문자를 쓰는 16진수다.
제한
한 줄에 세 정수를 공백 하나로 구분해 소문자 16진수로 출력한다. 차례대로 가장 작은 total, 가장 큰 total, 그리고 16!개 순열의 total을 모두 더한 값을 3b9aca07으로 나눈 나머지다.