【BZOJ3453】XLkxc [拉格朗日插值法]

XLkxc

Time Limit: 20 Sec  Memory Limit: 128 MB
[Submit][Status][Discuss]

Description

  给定 k,a,n,d,p
  f(i)=1^k+2^k+3^k+......+i^k
  g(x)=f(1)+f(2)+f(3)+....+f(x)
  求(g(a)+g(a+d)+g(a+2d)+......+g(a+nd))mod p

Input

  第一行数据组数,(保证小于6)
  以下每行四个整数 k,a,n,d

Output

  每行一个结果。

Sample Input

  5
  1 1 1 1
  1 1 1 1
  1 1 1 1
  1 1 1 1
  1 1 1 1

Sample Output

  5
  5
  5
  5
  5

HINT

  1<=k<=123
  0<=a,n,d<=123456789
  p==1234567891

Main idea

  给定k,a,n,d,求

Solution

  我们可以令

  然后推一波式子,再令

  那么显然有

  然后我们通过若干次差分,发现g在差分k+3次时全为0,那么g就是一个k+2次多项式;f在差分k+5次时全为0,那么f就是一个k+4次多项式

  我们通过拉格朗日插值法插g,得到k+5个f的值,然后再插值f就可以得到答案了。

Code

 1 #include<iostream>  
 2 #include<string>  
 3 #include<algorithm>  
 4 #include<cstdio>  
 5 #include<cstring>  
 6 #include<cstdlib>  
 7 #include<cmath>  
 8 using namespace std;  
 9 typedef long long s64;
10 const int ONE=1001;
11 const s64 MOD=1234567891;
12 
13 int T;
14 int k,a,n,d;
15 int g[ONE],f[ONE];
16 int inv[ONE],U[ONE],Jc[ONE];
17 int pre[ONE],suc[ONE];
18 
19 int get() 
20 {
21         int res=1,Q=1;  char c;
22         while( (c=getchar())<48 || c>57)
23         if(c=='-')Q=-1;
24         if(Q) res=c-48; 
25         while((c=getchar())>=48 && c<=57) 
26         res=res*10+c-48; 
27         return res*Q; 
28 }
29 
30 int Quickpow(int a,int b)
31 {
32         int res=1;
33         while(b)
34         {
35             if(b&1) res=(s64)res*a%MOD;
36             a=(s64)a*a%MOD;
37             b>>=1;
38         }
39         return res;
40 }
41 
42 int P(int k,int i)
43 {
44         if((k-i)&1) return -1+MOD;
45         return 1;
46 }
47 
48 namespace First
49 {
50         void Deal_jc(int k)
51         {
52             Jc[0]=1;
53             for(int i=1;i<=k;i++) Jc[i]=(s64)Jc[i-1]*i%MOD;
54         }
55         
56         void Deal_inv(int k)
57         {
58             inv[0]=1;    inv[k]=Quickpow(Jc[k],MOD-2);
59             for(int i=k-1;i>=1;i--) inv[i]=(s64)inv[i+1]*(i+1)%MOD;
60         }
61 }
62 
63 int Final(int f[],int n,int k)
64 {
65         pre[0]=1;    for(int i=1;i<=k;i++) pre[i]=(s64)pre[i-1] * (n-i+MOD) % MOD;
66         suc[0]=1;    for(int i=1;i<=k;i++) suc[i]=(s64)suc[i-1] * (s64)(n-k+i-1+MOD) % MOD;
67         
68         s64 Ans=0;
69         for(int i=1;i<=k;i++)
70         {
71             int Up=   (s64) pre[i-1]*suc[k-i] % MOD * f[i] % MOD;
72             int Down= (s64) inv[i-1]*inv[k-i] % MOD;
73             
74             Ans=(s64)(Ans + (s64) Up*Down % MOD * P (k,i) %MOD) % MOD;
75         }
76         
77         return Ans;
78 }
79 
80 int main()
81 {      
82         First::Deal_jc(150);    First::Deal_inv(150);
83         T=get();
84         while(T--)
85         {
86             k=get();    a=get();    n=get();    d=get();
87             
88             for(int i=0;i<=k+3;i++) g[i]=Quickpow(i,k);
89             for(int i=1;i<=k+3;i++) g[i]=((s64)g[i-1]+g[i])%MOD;
90             for(int i=1;i<=k+3;i++) g[i]=((s64)g[i-1]+g[i])%MOD;
91             for(int i=0;i<=k+5;i++)
92             f[i]=((s64)f[i-1]+Final(g,(a+(s64)i*d)%MOD,k+3)) % MOD;
93             
94             printf("%d\n",Final(f,n,k+5)%MOD);
95         }
96 }    
View Code

 

转载于:https://www.cnblogs.com/BearChild/p/6424353.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/253372.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

hive安装

雷顿学院大数据雷顿学院大数据&#xff1a;http://www.leidun.site/hive安装下载hivehttp://mirror.bit.edu.cn/apache/hive/下载后解压配置命令将hive加入命令vim ~/.bash_profile添加如下命令export HIVE_HOME/usr/local/Cellar/hive/1.2.1/libexec保存文件mysql数据库驱动cu…

JavaFX常用汇总

1. 描述备注 1.1 参考教程 博客 易百教程 JavaFX中国 1.5 安装 a). 在线安装e(fx)clipse插件 b). 下载安装SceneBuilder c). eclipse重启以后,windows->preference->javaFx->SceneBuilder executable选择 上一步中安装后的exe文件 2. 快速入门示例-MVC a). *.fxml文件…

Alsa驱动分析(转)

1. Abstract 2. Introduction 3. 音频驱动框架介绍 3.1 音频设备的注册 3.2 音频驱动的注册 3.2.1 Probe函数的调用 3.2.2 Soc_probe函数 4. 通常的使用流程的分析 4.1.1 open过程介绍 4.1.2 snd_pcm_hw_params流程分析 4.1.3 …

bzoj2744[HEOI2012]朋友圈

题目链接&#xff1a;bzoj2744 题目大意&#xff1a; 两个国家看成是AB两国&#xff0c;现在是两个国家的描述&#xff1a; 1.A国&#xff1a;每个人都有一个友善值&#xff0c;当两个A国人的友善值a、b&#xff0c;如果a xor b mod 21&#xff0c;那么这两个人都是朋友&#x…

Linux之父为过去的言行道歉,宣布离开社区反思

9月17日&#xff0c;Linux 4.19-rc4发布&#xff0c;成为Linux 4.19最新的开发测试内核。这是现阶段一个相当常规的内核更新&#xff0c;但令人震惊的是&#xff0c;Linux之父Linus Torvalds宣布将暂时离开内核维护社区&#xff0c;Greg Kroah-Hartman将接管接下来的Linux 4.19…

[BZOJ] 1620: [Usaco2008 Nov]Time Management 时间管理

1620: [Usaco2008 Nov]Time Management 时间管理 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 850 Solved: 539[Submit][Status][Discuss]Description Ever the maturing businessman, Farmer John realizes that he must manage his time effectively. He has N jobs con…

面试-接口和纯虚类的区别

相关资料&#xff1a;1.https://zhidao.baidu.com/question/91157279.html 纯虚类:1.一个子类只能继承一个抽象类&#xff08;虚类&#xff09;。2.一个抽象类可以有构造方法。 3.一个抽象类中的方法不一定是抽象方法&#xff0c;即其中的方法可以有实现&#xff08;有方法体&a…

TCP研究

tcp协议本身是可靠的,并不等于应用程序用tcp发送数据就一定是可靠的.不管是否阻塞,send发送的大小,并不代表对端recv到多少的数据 在阻塞模式下, send函数的过程是将应用程序请求发送的数据拷贝到发送缓存中发送并得到确认后再返回.但由于发送缓存的存在,表现为:如果发送缓存大…

DDR工作原理

DDR SDRAM全称为Double Data Rate SDRAM&#xff0c;中文名为“双倍数据流SDRAM”。DDR SDRAM在原有的SDRAM的基础上改进而来。也正因为如此&#xff0c;DDR能够凭借着转产成本优势来打败昔日的对手RDRAM&#xff0c;成为当今的主流。本文只着重讲讲DDR的原理和DDR SDRAM相对于…

8.1 文件查找local;find使用

文件查找&#xff1a; 在文件系统上查找符合条件的文件。 文件查找&#xff1a;locate, find 非实时查找(数据库查找)&#xff1a;locate实时查找&#xff1a;find locate 1 查询系统上预建的文件索引数据库 /var/lib/mlocate/mlocate.db2 依赖于事先构建的索引 索引的构建是在…

hdu 5273 Dylans loves sequence 逆序数 区间dp

点击打开链接 题意&#xff1a;给n个数&#xff0c;q次询问&#xff0c;&#xff08;L&#xff0c;R&#xff09;区间内的逆序数。 思路&#xff1a; 区间dp 代码一&#xff1a; 1 #include <bits/stdc.h>2 using namespace std;3 typedef long long ll;4 const int maxn…

python第三天习题

# 1. 文件a.txt内容&#xff1a;每一行内容分别为商品名字&#xff0c;价钱&#xff0c;个数&#xff0c;求出本次购物花费的总钱数# apple 10 3# tesla 100000 1# mac 3000 2# lenovo 30000 3# chicken 10 3## 2. 修改文件内容&#xff0c;把文件中的alex都替换成SB# with ope…

智能故事机方案简介

智能故事机&#xff0c;又叫WiFi故事机&#xff0c;AI故事机&#xff0c;通过WiFi联网&#xff0c;用户语音就可以跟它进行问答、点歌等互动&#xff1b;由于联网所以可以播放云端海量的儿童音频内容&#xff1b;手机端在微信公众号或者专属APP上操作&#xff0c;可以点播相应内…

使用setsockopt()接口,设置TCP的接收与发送超时,Invalid argument错误问题

使用TCP套接字时&#xff0c;当无网络连接时&#xff0c;还会继续send&#xff0c;继续recv阻塞&#xff0c;知道TCP自己协议机制判断断开连接时才会停止发送和接收&#xff0c;时间需要几分钟之久。解决的办法是&#xff0c;自己设置接收超时时间&#xff0c;当超时后重新发送…

关于SpringCloud、SpringBoot 希望这是说得最详细的

几年前&#xff0c;没几个jar冲突一下都不叫搭框架 —— java面试必修 什么是Spring Boot 用我的话来理解&#xff0c;Spring Boot就是整合了框架的框架&#xff0c;它让一切依赖都变得有序简单&#xff0c;你不用操心A.jar是什么版本&#xff0c;又依赖哪些版本的jar&#xff…

weui-switch开关控件,表单提交后如何取值

最近在学习weui这个框架&#xff0c;做了一些小的试验&#xff0c;发现weui-switch控件直接提交不能获取到表单信息&#xff0c;在segmentfault上发现也有人提了这个问题&#xff0c;有人说可以设置一个隐含标签来捕获开关的状态&#xff0c;试了一下&#xff0c;确实可以&…

麦克风设计指导与选型参考

随着语音识别技术的成熟&#xff0c;智能音箱类产品的火爆&#xff0c;越来越多的产品可以升级为语音交互产品&#xff1b; 下面简单介绍下此类产品的语音前端--麦克风阵列设计相关注意事项&#xff1a; 线性四麦阵列构型&#xff1a;如上图所示&#xff0c;麦克风直线等距摆…

[BZOJ1419] Red is good(期望DP)

传送门 逆推 只不过顺序还是顺着的&#xff0c;思想是逆着的 f[i][j]表示还剩下i张红牌&#xff0c;j张黑牌的期望值 那么边界是 f[i][0]i&#xff0c;因为只剩i张红牌 f[0][j]0&#xff0c;只剩黑牌&#xff0c;显然直接停止最优 f[i][j] max(0,i/(ij)*f[i-1][j]j/(ij)*f[i][…

Linux下高性能网络编程中的几个TCP/IP选项_SO_REUSEADDR、SO_RECVBUF、SO_SNDBUF、SO_KEEPALIVE、SO_LINGER、TCP_CORK、TCP_NODE

最近在新的平台上测试程序&#xff0c;以前一些没有注意到的问题都成为了性能瓶颈&#xff0c;通过设置一些TCP/IP选项能够解决一部分问题&#xff0c;当然根本的解决方法是重构代码&#xff0c;重新设计服务器框架。先列出几个TCP/IP选项&#xff1a; 选项 man 7 socket: SO_R…

云计算在未来一定是不可或缺的

2019独角兽企业重金招聘Python工程师标准>>> 在2018京东云合作伙伴大会上&#xff0c;京东云总裁申元庆表示&#xff0c;技术发展的大趋势是“分久必合&#xff0c;合久必分”循环往复的波动&#xff0c;近十年来云计算的发展将算力、存储、带宽全部集中在中央部分&…