萌新刚学OI,求助语法基础问题
  • 板块学术版
  • 楼主QZJ666
  • 当前回复7
  • 已保存回复7
  • 发布时间2024/11/29 19:29
  • 上次更新2024/11/29 21:10:11
查看原帖
萌新刚学OI,求助语法基础问题
301817
QZJ666楼主2024/11/29 19:29
#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
const ll mod=998244353;
int n;
ll k;
struct node{
	ll x,y;
}arr[2005];
ll ksm(ll a,ll m,ll p){
	a=(a+p)%p;
	ll ans=1;
	while(m){
		if(m&1)ans=ans*a%p;
		a=a*a%p;
		m>>=1;
	}
	return ans;
}
int main(){
	scanf("%d%lld",&n,&k);
	ll ans=0;
	for(int i=1;i<=n;i++)scanf("%lld%lld",&arr[i].x,&arr[i].y);
	for(int i=1;i<=n;i++){
		ll add=arr[i].y;
		for(int j=1;j<=n;j++){
			if(i==j)continue;
			add=add*(k-arr[j].x+mod)%mod*ksm(arr[i].x-arr[j].x,mod-2,mod)%mod;
		}
		ans=(ans+add)%mod;
	}
	cout<<ans;
	return 0;
}

请问为什么这份代码在洛谷上开了 C++14 和 O2 的情况下会跑将近 2s ,但是如果在 ll ksm(ll a,ll m,ll p) 前面加了 inline 就可以500ms 以内通过呢?

2024/11/29 19:29
加载中...