时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld
题目描述
日下西楼,独剩下帘外的细雨,怕是只能在梦中去寻找春的踪迹。月出东山,抬头仰望雨后夜空,望着手中那本紫色著名教材,一时间五味杂陈。
马上就要线代考试了,而小Y平时一直摸鱼没有好好学线代,于是他来请教你如何求行列式的值。
这是个

的行列式,但是与一般的行列式不同,这个行列式的元素是一个三进制串(无前导零)。所谓三进制串,是指每一位上的数字都不过

,例如,“10201”、“22222”、“1212”都是三进制串,它们对应的十进制数分别是

、

、

。而且这个行列式的值的定义也和一般的行列式的值的定义不同,它是:
其中,

是全排列的集合,

是一个全排列,如果

的逆序数如果为奇数则
)
为

,否则为

。
关于逆序数的定义,它是一个排列中满足
)
的数对的个数,即:
其中,如果满足关系
)
,
)
为

,否则为

。例如,“312”的逆序数是

,而“132”的逆序数是

。
答案可能过大,你需要对

取模。
输入描述:
第一行输入一个正整数
,表示行列式的大小。
接下来
行,每行
个三进制串
,表示行列式第
行第
列的元素。
输出描述:
输出一个正整数,表示该行列式的值。
示例2
输入
复制
3
102 121 101
110 121 212
100 222 201