fold算法(拉格朗日插值)
- 如果打表发现某个数列: 差分有限次之后全为0 例如: 2017新疆乌鲁木齐ICPC现场赛D题 ,,,,,,,,,,……
- 【2018江苏南京ICPC现场赛也有这样的题目】
- 那么可以使用以下黑科技计算出第k(1e18)项(对质数取模) (原理: 拉格朗日插值)
- 预处理复杂度为线性, 每次计算复杂度为: O(传入项数个数)【同样也是线性】
- 以下代码为内测版, 出锅了fold不背锅, 欢迎指出bug
- ------------------------下面是模板代码------------------------
- typedef long long ll;
- //mod一定要是质数
- const int mod=1e9+;
- int pv[]={,,,,,,,}; //前几项, 前面无效值用0占位
- const int st=,ed=; //使用上面数组下标为[st,ed]的数据
- ll fac[ed+],inv[ed+],facinv[ed+];
- ll pre[ed+],saf[ed+];
- //预处理: fac[]阶乘, inv[]逆元, facinv[]阶乘逆元
- //只需要main函数内调用一次!
- void init()
- {
- fac[]=inv[]=facinv[]=;
- fac[]=inv[]=facinv[]=;
- for(int i=;i<ed+;++i)
- {
- fac[i]=fac[i-]*i%mod;
- inv[i]=mod-(mod/i*inv[mod%i]%mod);
- facinv[i]=facinv[i-]*inv[i]%mod;
- }
- }
- //计算第x0项的值
- //复杂度O(ed-st)
- ll cal(ll x0)
- {
- int n=ed-st;
- x0=((x0%mod)+mod)%mod;
- pre[]=((x0-st)%mod+mod)%mod;
- saf[n]=((x0-st-n)%mod+mod)%mod;
- for(int i=;i<=n;++i)
- {
- pre[i]=((pre[i-]*(x0-st-i))%mod+mod)%mod;
- saf[n-i]=((saf[n-i+]*(x0-st-n+i))%mod+mod)%mod;
- }
- ll res=;
- for(int i=;i<=n;++i)
- {
- ll fz=;
- if(i!=)fz=fz*pre[i-]%mod;
- if(i!=n)fz=fz*saf[i+]%mod;
- ll fm=facinv[i]*facinv[n-i]%mod;
- if((n-i)&)fm=mod-fm;
- (res+=pv[i+st]*(fz*fm%mod)%mod)%=mod;
- }
- return res;
- }
fold爷nb
fold算法(拉格朗日插值)的更多相关文章
- Codeforces D. The Sum of the k-th Powers(拉格朗日插值)
题目描述: The Sum of the k-th Powers time limit per test 2 seconds memory limit per test 256 megabytes i ...
- 常系数齐次线性递推 & 拉格朗日插值
常系数齐次线性递推 具体记在笔记本上了,以后可能补照片,这里稍微写一下,主要贴代码. 概述 形式: \[ h_n = a_1 h_{n-1}+a_2h_{n-2}+...+a_kh_{n-k} \] ...
- LG4781 【模板】拉格朗日插值
题意 题目描述 由小学知识可知,$n$个点$(x_i,y_i)$可以唯一地确定一个多项式 现在,给定$n$个点,请你确定这个多项式,并将$k$代入求值 求出的值对$998244353$取模 输入输出格 ...
- 多项式函数插值:全域多项式插值(一)单项式基插值、拉格朗日插值、牛顿插值 [MATLAB]
全域多项式插值指的是在整个插值区域内形成一个多项式函数作为插值函数.关于多项式插值的基本知识,见“计算基本理论”. 在单项式基插值和牛顿插值形成的表达式中,求该表达式在某一点处的值使用的Horner嵌 ...
- 【BZOJ】3453: tyvj 1858 XLkxc 拉格朗日插值(自然数幂和)
[题意]给定k<=123,a,n,d<=10^9,求: $$f(n)=\sum_{i=0}^{n}\sum_{j=1}^{a+id}\sum_{x=1}^{j}x^k$$ [算法]拉格朗日 ...
- 【BZOJ】2655: calc 动态规划+拉格朗日插值
[题意]一个序列$a_1,...,a_n$合法当且仅当它们都是[1,A]中的数字且互不相同,一个序列的价值定义为数字的乘积,求所有序列的价值和.n<=500,A<=10^9,n+1< ...
- 【BZOJ】4559: [JLoi2016]成绩比较 计数DP+排列组合+拉格朗日插值
[题意]n位同学(其中一位是B神),m门必修课,每门必修课的分数是[1,Ui].B神碾压了k位同学(所有课分数<=B神),且第x门课有rx-1位同学的分数高于B神,求满足条件的分数情况数.当有一 ...
- LG4781 【模板】拉格朗日插值 和 JLOI2016 成绩比较
[模板]拉格朗日插值 题目描述 由小学知识可知,$n$个点$(x_i,y_i)$可以唯一地确定一个多项式 现在,给定$n$个点,请你确定这个多项式,并将$k$代入求值 求出的值对$998244353$ ...
- [BZOJ3453]tyvj 1858 XLkxc:拉格朗日插值
分析 之前一直不知道拉格朗日插值是干什么用的,只会做模板题,做了这道题才明白这个神奇算法的用法. 由题意可知,\(f(x)\)是关于\(x\)的\(k+1\)次函数,\(g(x)\)是关于\(x\)的 ...
随机推荐
- Laravel 更新数据时在表单请求验证中排除自己,检查指定字段唯一性
原文地址:https://moell.cn/article/24 不错的laravel网站 需求场景 修改用户信息时,在表单请求验证中排除当前邮箱所在的记录行,并检查邮箱的唯一性. Laravel版本 ...
- NOIP2018复赛获奖名单
根据<CCF NOIP2018复赛获奖分数线及名额分配办法>,现将NOIP2018复赛获奖名单公告如下: 复赛提高组一等奖获奖名单 复赛提高组二等奖获奖名单 复赛提高组三等奖获奖名单 复赛 ...
- Javascript this 的一些总结
1.1.1 摘要 相信有C/C++.C#或Java等编程经验的各位,对于this关键字再熟悉不过了.由于Javascript是一种面向对象的编程语言,它和C/C++.C#或Java一样都包含this关 ...
- js判断一个值是空的最快方法是不是if(!value){alert("这个变量的值是null");}
!逻辑非 操作符(js)-操作于任何值,(!undefined)(!Null)(!任何对象)(!"")(!"lihuan")(!任何非零数字值) (!0)(!N ...
- nginx负载均衡实验
Nginx负载均衡概述 Web服务器,直接面向用户,往往要承载大量并发请求,单台服务器难以负荷,我使用多台WEB服务器组成集群,前端使用Nginx负载均衡,将请求分散的打到我们的后端服务器集群中,实现 ...
- VSTO:使用C#开发Excel、Word【9】
文件背后的代码VSTO支持文档背后的代码,要求开发人员使用VSTO项目中生成的具有预连接上下文和预连接事件的类.这些类有时被称为“代码后面”类,因为它们是与特定文档或工作表相关联的代码.在Word中, ...
- 深入理解java虚拟机---垃圾回收(十一)
1.垃圾回收要解决的问题 可以通过配置虚拟机参数来打印出内存日志: -verbose:gc -XX:+PrintGCDetails 垃圾收集(Garbage Collection,GC),要设计一个G ...
- 項目当中使用的easyui的模板crud页面
1.简单的增删改查页面: 第一步骤:html原型型编写,写法参照了easyui demo中form有关html等 <!DOCTYPE html> <html> <head ...
- 杭电多校第三场 A Ascending Rating
Problem Description Before the start of contest, there are n ICPC contestants waiting in a long queu ...
- 关于索引的相关 day45
mysql数据库索引相关 一 介绍 什么是索引? 索引在MySQL中也叫做“键”,是存储引擎用于快速找到记录的一种数据结构.索引对于良好的性能非常关键,尤其是当表中的数据量越来越大时,索引对于性能 ...