拉格朗日插值求逆元只能用快速幂吗?
查看原帖
拉格朗日插值求逆元只能用快速幂吗?
113181
滑蒻稽楼主2021/2/2 18:28

贴一下我的代码,不过不看也无所谓

#include <bits/stdc++.h>
#define ll long long

using namespace std;
ll n,k,x[2005],y[2005],mod=998244353,ans;//998244353是个题目常用取模质数 

ll exgcd(ll a,ll b,ll &x,ll &y)//ax+by
{
	if(b==0)
	{
		x=1,y=0;
		return a;
	}
	int ret=exgcd(b,a%b,x,y),t=x;
	x=y;
	y=t-(a/b)*x;
	return ret;
}

ll inv(ll x)
{
	ll ans,y;
	exgcd(x,mod,ans,y);
	return (ans%mod+mod)%mod;
}

int main()
{
	cin>>n>>k;
	for(int i=1;i<=n;i++)
	{
		cin>>x[i]>>y[i];
	}
	for(int i=1;i<=n;i++)
	{
		ll ans_up=y[i],ans_down=1;
		for(int j=1;j<=n;j++)
		{
			if(j==i) continue;
			ans_up=(ans_up*(k-x[j]))%mod;
			ans_down=(ans_down*(x[i]-x[j]))%mod;
		}
		ans=(ans+(ans_up*inv(ans_down)))%mod;
	}
	cout<<(ans+mod)%mod<<endl;
	
	return 0;
}

这样求出来的逆元正负老是出问题

2021/2/2 18:28
加载中...