【数学】拉格朗日插值
【数学】拉格朗日插值
题目描述
由小学知识可知
现在,给定这
算法描述
考虑构造一个多项式,满足
其中
对于
这样就能做到当
那么怎样才能让
所以除掉一个相同的值就好了。所以
时间复杂度
对于这道题
Code
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MOD = 998244353;
inline ll ksm(ll base,ll pts)
{
ll ret = 1;
for(;pts > 0;pts >>= 1,base = base * base % MOD)
if(pts & 1)
ret = ret * base % MOD;
return ret;
}
ll n,k,x[2005],y[2005];
inline ll g(ll i,ll X)
{
ll ret = 1;
for(int j = 1;j <= n;j++)
{
if(i == j) continue;
ret = ret * (X - x[j] + MOD) % MOD;
}
for(int j = 1;j <= n;j++)
{
if(i == j) continue;
ret = ret * ksm((x[i] - x[j] + MOD) % MOD,MOD - 2) % MOD;
}
return ret;
}
int main()
{
cin>>n>>k;
for(int i = 1;i <= n;i++)
cin>>x[i]>>y[i];
ll ans = 0;
for(int i = 1;i <= n;i++)
ans += y[i] * g(i,k) % MOD,ans %= MOD;
cout<<ans;
return 0;
}
但是对于很多更加灵活的题目,时间复杂度要求更高,并且点值是自己选的,这个时候就可以利用点值自选的性质,降低复杂度至
例题:The Sum of the k-th Powers - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
题目描述
题目描述:求
数据范围:
算法描述
这个题又叫“自然数幂前缀和”,有广泛的应用,看到自然数的
我们使用归纳法,假设
并假设
转化一下式子:
注意到
由归纳我们可以知道,
由于
所以
知道了这点,由于
然而我们怎样在
考虑到点值连续,它们互相之间的差就是连续的,这里假设它们是
而
时间复杂度
Code
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e6 + 5;
ll n,m,a[N],k,x[N],y[N],s[N],Pd = 1;
const int MOD = 1e9 + 7;
inline ll ksm(ll base,ll pts)
{
ll ret = 1;
for(;pts > 0;pts >>= 1,base = base * base % MOD)
if(pts & 1)
ret = ret * base % MOD;
return ret;
}
inline ll f(ll X)
{
ll ret = 0;
for(int i = 1;i <= k + 2;i++)
{
ll add = y[i];
add = add * Pd % MOD * ksm(X - x[i],MOD - 2) % MOD;
add = add * ((((k + 2 - i) % 2 == 0) ? 1 : -1) + MOD) % MOD * ksm(s[i - 1],MOD - 2) % MOD * ksm(s[k + 2 - i],MOD - 2) % MOD;
ret = (ret + add) % MOD;
}
return ret;
}
int main()
{
cin>>n>>k;
s[0] = 1;
for(int i = 1;i <= k + 2;i++) s[i] = s[i - 1] * i % MOD;
for(int i = 1;i <= k + 2;i++)
{
x[i] = i;
y[i] = ksm(i,k);
y[i] = (y[i] + y[i - 1]) % MOD;
Pd = Pd * ((n - x[i] + MOD) % MOD) % MOD;
}
if(n <= k + 2) cout<<y[n];
else cout<<f(n);
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话