#P854. 摸彩排序

摸彩排序

题目描述

有一种用摸彩方式完成排序的算法:每次从序列中随机挑选两个位置(不一定相邻),检查这两个数是否构成逆序(左大右小称之为逆序),若是则交换这两个数,循环反复直到序列完全升序为止。

给定一个只由 0011 构成序列,请问使用上述策略,期望情况下需要摸彩多少次才能完成排序?

输入格式

  • 若干 01 字符组成的一个序列

输出格式

设答案为一个有理数 P/QP/Q,且 PPQQ 互素,则应该输出一个整数,具体数值为

PQmod1,000,000,007PQ'\bmod {1,000,000,007}

其中 QQ' 满足 QQ1(mod1,000,000,007)Q'Q\equiv 1\pmod {1,000,000,007}

010
3

样例解释 1

1/3的概率选中最后两个数,所以期望为3步

000111
0

样例解释 2

不需要摸彩就能完成排序

数据范围

nn 表示输入序列的长度:

  • 30%30\% 的数据,1n201\leq n\leq 20
  • 60%60\% 的数据,1n50001\leq n\leq 5000
  • 100%100\% 的数据,1n300,0001\leq n\leq 300,000