當 x 的取值不一定是 1-n 連續的時候,我們只能 o(n²) 地插出結果
洛谷 p4781
#include#define ll long long
using namespace std;
const int n=2e3+10;
const int mod=998244353;
int x[n],y[n];
ll quick_pow(ll a,ll b)
a = a * a % mod;
b >>= 1;
} return ans;
}ll lagrange(int n, int *x, int *y, int xi)
ans = (1ll*ans+1ll*y[i]*s1%mod*quick_pow(s2, mod-2)%mod)%mod;
}//我也不知道為什麼這裡能直接費馬小定理求逆元……
return (ans+mod)%mod;
}int main()
printf("%lld\n",lagrange(t,x,y,n));
return 0;
}
博主智障,忘記mod是乙個質數,所有數都與質數互質……
當 x 的取值確定是從1-n 連續的時候,我們可以對式子進行優化,之後 o(n) 即可求出答案
2019 icpc 南昌 b
#include#define ll long long
using namespace std;
const int maxn=1005;
const int mod=9999991;
int t,n,m;
ll a[maxn],inv[mod+5],finv[maxn];
ll sum[maxn],ans;
ll qpow(ll a,ll b)
return res;
}void init()
ll cal(ll x,ll *a,ll up)
return res;
}int main()
a[n+1]=cal(n+1,a,n);
sum[0]=a[0];
for(int i=1; i<=n+1; ++i)
sum[i]=(sum[i-1]+a[i])%mod;
while(m--)
if(l-1<=n+1)
ans=(cal(r,sum,n+1)-sum[l-1]+mod)%mod;
else
ans=(cal(r,sum,n+1)-cal(l-1,sum,n+1)+mod)%mod;
printf("%lld\n",ans);
} }return 0;
}
cf622f : 該問題是乙個經典問題,自然冪級數的字首和
#include#define ll long long
using namespace std;
const int maxn=1e6+10;
const int mod=1e9+7;
int n,m;
ll a[maxn+100],inv[maxn+100],finv[maxn+100];
ll qpow(ll a,ll b)
return res;
}void init()
ll cal(ll x,ll *a,ll up)
return res;
}int main()
if(n<=m+2) else
return 0;
}
拉格朗日插值法
拉格朗日插值法 拉格朗日插值法可以幫助我們解決以下的問題 已知x取值0,1,1,2時,f取值2,2,0,6 求x 3時f的值。示例1 intxs intys f 3 intval lagrangepolynomial 3,xs,ys staticint lagrangepolynomial intx...
拉格朗日插值法
模板題 給出n nn個點 xi yi x i,y i xi y i 讓你確定這個n 1 n 1n 1次方程並代入求值 這個有三種求法 第一種是差分法,只適用於xi ix i i xi i的情況,就是不斷做差分直到序列變成乙個定值就可以求出所有項的係數,複雜度o n 2 o n 2 o n2 第二種是...
拉格朗日插值法
function p lagrange x,y p lagrange x,y 其中x和y是向量,p是返回的多項式向量 m獲取x的個數 m length x for k 1 1 m 表示乙個插值函式的起始值 v 1 for i 1 1 m if k i 注意 以後凡是在遇到乙個在數學上是 x 1 等包...