南昌邀请赛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 ...
随机推荐
- python range函数(42)
在python中使用最多的除了print函数 就是 for循环 了,那么这里就不得不介绍一下python内置函数range函数! 一.range函数简介 python range函数可创建一个整数列表 ...
- 目前最全的Python的就业方向
Python是一门面向对象的编程语言,编译速度超快,从诞生到现在已经25个年头了.它具有丰富和强大的库,常被称为“胶水语言”,能够把用其他语言编写的各种模块(尤其是C/C++)很轻松地联结在一起.其特 ...
- [PHP] 使用PHP在mongodb中进行count查询
在php7的mongodb扩展中,当要查询某个集合在某个条件下的数据个数时,可以使用下面的方式来获取. 比原生的命令要复杂许多 比旧版mongo扩展也复杂许多 需要使用到MongoDB\Driver\ ...
- C语言编写程序的大小端问题
有时候,用C语言写程序需要知道大端模式还是小端模式,,由于寄存器大于一个字节(8bit),就会存在一个字节安排的问题,例如(16bit)的short型,(32bit)的int型,具体需要看具体的编译器 ...
- Bringing up interface eth0: Device eth0 does not seem to be presen
在公司的电脑虚拟机上安装了centos 6.5 ,然后我把他克隆下来用在家里电脑的虚拟机上,打开后查看ip,发现只有回环地址lo,没有eth0, 于是重启网络 输入 service network r ...
- MySQL概述及入门(一)
MySql概述及入门(一) 什么是MySQL? MySQL是当今主流的关系型数据库管理系统(记录是有行有列的数据库) , 可以与Oracle 和SQL Server 竞争 , 是最好RDBMS( ...
- 剑指offer-面试题50-第一个只出现一次的字符-哈希表
/* 题目: 求字符串第一个只出现一次的字符. */ /* 思路: 使用map遍历两次,第一次计数,第二次找到计数为1的第一个字符. */ #include<iostream> #incl ...
- win10创建本地用户
win+r,输入lusrmgr.msc win+i
- [Python] for in单行循环生成dict
for循环体内的语句只有一行的情况的下,可以简化for循环的书写,尤其当你需要生成一个可迭代对象的时候 d = {x:x*10 for x in range(3)} print(d) d1 = [x* ...
- 编程中的幂等性 —— HTTP幂等性
幂等(idempotent.idempotence)是一个数学与计算机学概念,常见于抽象代数中. 在编程中.一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同.幂等函数,或幂等方法, ...