아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

アナグラム (Anagram)

면접 대비

시간 제한0.5초메모리 제한1024 MB

요약
문자열이 주어질 때, 그 문자열의 모든 서로 다른 아나그램을 사전순으로 나열했을 때 자기 자신이 몇 번째인지 구한다.
난이도

보통10점 중 5점

유형
조합론, 문자열, 정렬
정답자
아직 제출이 없습니다

문제

ある文字列の文字の順序を並べ替えて別の文字列を作ること,また,そのように並べ替えて 作られた文字列をアナグラム (Anagram) と呼ぶ.この問題では,一度も並べ替えをしていな い文字列も元の文字列のアナグラムと呼ぶことにする.つまり,文字列 “EARTH” は文字列 “HEART” のアナグラムであり,文字列 “HEART” も,文字列 “HEART” のアナグラムである.

文字列が与えられると,多くの場合,その文字列のアナグラムは何通りも考えられる.たとえ ば文字列 “IOI” のアナグラムは,自身を含めて辞書順に “IIO”, “IOI”, “OII” の 3 通りがある.

さて,君にはある文字列が与えられる.君の仕事は,与えられた文字列が,その文字列の全 てのアナグラムの中で,辞書順で何番目に現れるか,を調べるプログラムを書くことである.

たとえば,文字列 “EARTH” は “EARTH” のアナグラムの中で 28 番目であり, 文字列 “HEART” は “HEART” のアナグラムの中で 55 番目である.

입력

入力は 1 行だけであり,この 1 行は アルファベットの大文字のみからなる 20 文字以下の文字列である.この文字列に対して問題の 計算を行いなさい.

출력

出力は,標準出力に行うこと.入力で与えられた文字列が,その文字列のアナグラ ムの中で,辞書順で何番目の文字列であるかを整数で 1 行に出力せよ.

힌트

注意 オーバーフローに注意すること.

232 < 20 × 19 × · · · × 3 × 2 × 1 < 263

である.

예제2

  1. 예제 1

    입력
    HEART
    
    예상 출력
    55
    
  2. 예제 2

    입력
    IOI
    
    예상 출력
    2