#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 以内通过呢?