求助
  • 板块灌水区
  • 楼主ahumannickname
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/10/31 11:01
  • 上次更新2023/10/31 13:28:49
查看原帖
求助
676598
ahumannickname楼主2023/10/31 11:01

这是我某一次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;
	} 
2023/10/31 11:01
加载中...