ブルーブリッジカップ配列シーケンス


a b c dという4文字で1つの列を構成すると、4!=24種類で、シーケンスを並べた場合、各列は1つのシーケンス番号に対応します.
  abcd  0
  abdc  1
  acbd  2
  acdb  3
  adbc  4
  adcb  5
  bacd  6
  badc  7
  bcad  8
  bcda  9
  bdac  10
  bdca  11
  cabd  12
  cadb  13
  cbad  14
  cbda  15
  cdab  16
  cdba  17
  ...
今では10個以上の2つの異なる小文字があり、それらからなる列を与えていますが、この列のすべての配列のシーケンス番号を求めることができますか?
【入力形式】
1行、1列.
【出力形式】
文字列のすべての配列で生成された列のシーケンス番号を表す整数行.注意:最小のシーケンス番号は0です.
例:
入力:
bdca
プログラムは出力するべきです:
11
次に例を示します.
入力:
cedab
プログラムは出力するべきです:
70
生産資源約定:
ピークメモリ消費量<256 M
CPU消費<1000 ms
要求通りに出力してください.ヘビを描いて印刷しないでください.「入力してください.」と入力します.
すべてのコードを同じソースファイルに配置し、デバッグに合格した後、コピーしてソースコードをコミットします.
注意:main関数は0を返す必要があります
注:ANSI C/ANSI C++標準のみを使用し、コンパイル環境やオペレーティングシステムに依存する特別な関数を呼び出さないでください.
注意:すべての依存する関数は、ソースファイル内のincludeで明確にする必要があります.通常のヘッダファイルは、エンジニアリング設定で省略することはできません.
コミットするときは、目的のコンパイラタイプを選択することに注意してください.
分析:テーマは直接康拓展開です.
#include
using namespace std;
int a[11]={0,1,0};
int ans=0,index=0;
string s;
void getAns(string s)
{
	int l=s.length();
	//     
	for(int i=0;is[j])
		{
			index++;	
		}
		ans+=index*a[l-1-i];
	}
	cout<>s;
	//  
	getAns(s);
	return 0; 
}