南昌邀请赛B题(拉格朗日插值)
题目链接:https://nanti.jisuanke.com/t/40254
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<set>
#include<ctime>
#include<vector>
#include<cmath>
#include<algorithm>
#include<map>
#define ll long long
using namespace std;
const int N=1e3+;
const int P=;
ll pre[N], suf[N], ifac[N],sum[N],a[N],fac[N];
ll Pow(ll x, int t)
{
ll res=;
while (t)
{
if (t&) res=(x*res)%P;
x=x*x%P; t>>=;
}
return res;
}
void init(int n)
{
fac[]=;
for(int i=;i<=n+;i++)
{
fac[i]=fac[i-]*i%P;
}
for(int i=;i<=n+;i++)
{
ifac[i]=Pow(fac[i],P-);
}
}
ll Lagrange(ll *y,ll n,ll k)
{
ll ans=; pre[]=;suf[n+]=;
for (int i=; i<=n; i++) pre[i+]=1ll*pre[i]*(k-i)%P;
for (int i=n; i>=; i--) suf[i]=1ll*suf[i+]*(k-i)%P; for (int i=; i<=n; i++)
{
ll temp=y[i]*pre[i]%P*suf[i+]%P*ifac[i]%P*ifac[n-i]%P;
if((n-i)&)
ans=(ans-temp)%P;
else
ans=(ans+temp)%P;
}
return (ans%P+P)%P;
} int main()
{
ll T,n,m,L,R;
cin>>T;
init();
while(T--)
{
cin>>n>>m;
for(int i=;i<=n;i++)
{
cin>>a[i];
}
a[n+]=Lagrange(a,n,n+);
sum[]=a[]%P;
for(int i=;i<=n+;i++)
{
sum[i]=(sum[i-]+a[i])%P;
}
for(int j=;j<=m;j++)
{
cin>>L>>R;
ll ans=Lagrange(sum,n+,R)-Lagrange(sum,n+,L-);
cout<<(ans+P)%P<<"\n";
}
}
return ;
}
南昌邀请赛B题(拉格朗日插值)的更多相关文章
- BZOJ.5339.[TJOI2018]教科书般的亵渎(拉格朗日插值) & 拉格朗日插值学习笔记
BZOJ 洛谷 题意的一点说明: \(k\)次方这个\(k\)是固定的,也就是最初需要多少张亵渎,每次不会改变: 因某个怪物死亡引发的亵渎不会计分. 不难发现当前所需的张数是空格数+1,即\(m+1\ ...
- 2019南昌邀请赛网络预选赛 M. Subsequence
传送门 题意: 给出一个只包含小写字母的串 s 和n 个串t,判断t[i]是否为串 s 的子序列: 如果是,输出"YES",反之,输出"NO": 坑点: 二分一 ...
- BZOJ3601 一个人的数论 莫比乌斯反演、高斯消元/拉格朗日插值
传送门 题面图片真是大到离谱-- 题目要求的是 \(\begin{align*}\sum\limits_{i=1}^N i^d[gcd(i,n) == 1] &= \sum\limits_{i ...
- 【BZOJ2655】calc DP 数学 拉格朗日插值
题目大意 一个序列\(a_1,\ldots,a_n\)是合法的,当且仅当: 长度为给定的\(n\). \(a_1,\ldots,a_n\)都是\([1,m]\)中的整数. \(a_1, ...
- 【Luogu4781】【模板】拉格朗日插值
[Luogu4781][模板]拉格朗日插值 题面 洛谷 题解 套个公式就好 #include<cstdio> #define ll long long #define MOD 998244 ...
- BZOJ.3453.tyvj 1858 XLkxc(拉格朗日插值)
BZOJ 题意即求\[\sum_{i=0}^n\sum_{j=1}^{a+id}\sum_{x=1}^jx^k\] 我们知道最后一个\(\sum\)是自然数幂和,设\(f(n)=\sum_{x=1}^ ...
- luogu P4781 【模板】拉格朗日插值
嘟嘟嘟 本来以为拉格朗日插值是一个很复杂的东西,今天学了一下才知道就是一个公式-- 我们都知道\(n\)个点\((x_i, y_i)\)可以确定唯一一个最高次为\(n - 1\)的多项式,那么现在我们 ...
- fold算法(拉格朗日插值)
如果打表发现某个数列: 差分有限次之后全为0 例如: 2017新疆乌鲁木齐ICPC现场赛D题 ,,,,,,,,,,…… [2018江苏南京ICPC现场赛也有这样的题目] 那么可以使用以下黑科技计算出第 ...
- 【BZOJ4559】成绩比较(动态规划,拉格朗日插值)
[BZOJ4559]成绩比较(动态规划,拉格朗日插值) 题面 BZOJ 洛谷 题解 显然可以每门课顺次考虑, 设\(f[i][j]\)表示前\(i\)门课程\(zsy\)恰好碾压了\(j\)个\(yy ...
随机推荐
- 3,HDFS原理
1,HDFS体系结构 ··· HDFS是采用master/slaves即主从结构模型来管理数据的.这种模型主要由四部分组成,分别是Client.NameNode.DataNode.SecondaryN ...
- 如何避免FOUC,是如何产生的
FOUC(Flash Of Unstyled Content)即浏览器样式闪烁或者叫做无样式内存闪烁(用户定义样式表加载之前浏览器使用默认样式显示文档,用户样式加载渲染之后再从新显示文档,造成页面闪烁 ...
- apue 外传
先上目录 chapter 3 [apue] dup2的正确打开方式 chapter 10 [apue] 等待子进程的那些事儿 chapter 14 [apue] 使用文件记录锁无法实现父子进程交互执行 ...
- 插入数据失败提示: Setting autocommit to false on JDBC Connection 自动提交失败
来源:https://blog.csdn.net/qq_42799475/article/details/102742109 今天在执行mybstis的测试时,明明已经写好了插入语句但是数据库没有插入 ...
- Ubuntu-Server18.04开启无线网卡并配置静态ip
手里有一个笔记本快10年了,还是奔腾处理器,最近把它做成了Ubuntu-Server的系统,花了点时间折腾无线网卡,稍微记录一下,希望看见的人能少踩点坑. 1. 制作U盘启动工具,从Ubuntu官网下 ...
- springBoot进阶02
SpringBoot进阶02 1. 日志的使用 1.1 基本使用 /** * 获取日志记录器 */ Logger logger = LoggerFactory.getLogger(this.getCl ...
- 记录一个解决IOS极光推送解决问题方法的网址csdn
https://blog.csdn.net/Three_Zhang/article/details/54667258
- 小Z的袜子(hose) HYSBZ - 2038 莫队+分块
#include<bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<ll,ll>pl ...
- ubuntu 安装mysql数据库
apt方式安装 官网参考: https://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/ 执行命令: sudo wget https://dev.m ...
- day 9 深浅拷贝
浅copy 现有数据 data = { "name":"alex", "age":18, "scores":{ &quo ...