第一种:WA
#include<bits/stdc++.h>
#define int long long
#define ull unsigned long long
using namespace std;
const int N=2e5+5;
const int MOD=998244353;
int a[N],p[N];
bool cmp(int a,int b){
return a>b;
}
int qpow(int a,int b){
int ans=1;
while(b>0){
if(b&1) ans=ans*a%MOD;
a=a*a%MOD;
b>>=1;
}
return ans;
}
int inv(int x){
return qpow(x,MOD-2);
}
void calc(){
int n,mx=0,cnt=1,tot=1;scanf("%lld",&n);
for(int i=1;i<=n;i++) scanf("%lld",&a[i]);
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++){
if(a[i]==a[i+1]) cnt++;
else break;
}
/*for(int i=1;i<=n;i++){
if(a[i]==a[1]) cnt++;
else if(a[i]==a[2]) tot++;
}*/
if(cnt>1) printf("%lld\n",p[n]);
else if(a[2]!=a[1]-1) printf("0\n");
else{
for(int i=2;i<=n;i++){
if(a[i]==a[i+1]) tot++;
else break;
}
int ans=1;
ans=p[n]*tot%MOD*inv(tot+1)%MOD;
printf("%lld\n",ans);
}
}
signed main()
{
//freopen("jury.in","r",stdin);freopen("jury.out","w",stdout);
p[0]=1;
for(int i=1;i<=2e5;i++) p[i]=p[i-1]*i%MOD;
int T;scanf("%lld",&T);
while(T--) calc();
return 0;
}
/*
1
21
4 4 7 5 9 4 7 8 8 1 9 8 4 7 7 10 5 9 4 6 8
*/
第二种:AC
#include<bits/stdc++.h>
#define int long long
#define ull unsigned long long
using namespace std;
const int N=2e5+5;
const int MOD=998244353;
int a[N],p[N];
bool cmp(int a,int b){
return a>b;
}
int qpow(int a,int b){
int ans=1;
while(b>0){
if(b&1) ans=ans*a%MOD;
a=a*a%MOD;
b>>=1;
}
return ans;
}
int inv(int x){
return qpow(x,MOD-2);
}
void calc(){
int n,mx=0,cnt=0,tot=0;scanf("%lld",&n);
for(int i=1;i<=n;i++) scanf("%lld",&a[i]);
sort(a+1,a+n+1,cmp);
/*for(int i=1;i<=n;i++){
if(a[i]==a[i+1]) cnt++;
else break;
}*/
for(int i=1;i<=n;i++){
if(a[i]==a[1]) cnt++;
else if(a[i]==a[2]) tot++;
}
if(cnt>1) printf("%lld\n",p[n]);
else if(a[2]!=a[1]-1) printf("0\n");
else{
/*for(int i=2;i<=n;i++){
if(a[i]==a[i+1]) tot++;
else break;
}*/
int ans=1;
ans=p[n]*tot%MOD*inv(tot+1)%MOD;
printf("%lld\n",ans);
}
}
signed main()
{
//freopen("jury.in","r",stdin);freopen("jury.out","w",stdout);
p[0]=1;
for(int i=1;i<=2e5;i++) p[i]=p[i-1]*i%MOD;
int T;scanf("%lld",&T);
while(T--) calc();
return 0;
}
/*
21
4 4 7 5 9 4 7 8 8 1 9 8 4 7 7 10 5 9 4 6 8
*/