预处理一个阶乘在不同模系下的值作为hash值,然后判断两个数组hash值的乘积是否相等即可。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int inf = 0x3f3f3f3f;
ll mod[10]={
1000019,1000079,1000103,1000121,1000139,1000141,1000169,1000189,1000223,1000229}; //10个素数
ll a[100000+20],b[100000+20];
ll fact[100000+20][10];
ll hash1[10],hash2[10];