这是我某一次CF考试的D题代码,有人能告诉我错在哪里吗:
#include<iostream>
using namespace std;
long long mod=998244353;
long long fpow(long long x,long long n)
{
if(n==0)
{
return 1;
}
long long tmp=fpow(x,n/2);
if(n%2==0)
{
return (tmp*tmp)%mod;
}
else
{
return ((tmp*tmp)%mod*x)%mod;
}
}
long long f[100005];
int main()
{
long long n;
cin>>n;
f[1]=1;
for(long long i=2;i<=n/3;i++)
{
f[i]=(f[i-1]*i)%mod;
}
long long g=fpow(n/6,2*mod-4);
long long ans=1;
for(long long i=1;i<=n/3;i++)
{
long long tmp1,tmp2,tmp3,tmp=1;
cin>>tmp1>>tmp2>>tmp3;
if(tmp1==tmp2)
{
if(tmp3>tmp1)
{
tmp=2;
}
}
if(tmp1==tmp3)
{
if(tmp2>tmp1)
{
tmp=2;
}
}
if(tmp2==tmp3)
{
if(tmp1>tmp2)
{
tmp=2;
}
}
if(tmp1==tmp2)
{
if(tmp1==tmp3)
{
tmp=3;
}
}
ans=(ans*tmp)%mod;
}
cout<<(ans*(f[n/3]*g)%mod)%mod<<endl;
return 0;
}