【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…

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 …

[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…

DDR工作原理

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

智能故事机方案简介

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

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

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

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

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

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

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

智能音箱 之 音频通路质量--测试与参数

一、概述 当将语音识别算法接入到设备时&#xff0c;务必要保证设备的音频通路具有足够的质量。因此对设备进行音频测试&#xff0c;以评估能够影响语音识别性能的音频前端的音频参数。如下要点对语音识别至关重要&#xff1a; 自然声音合适的增益良好的信噪比一致的响应&…

Python学习 - 常用模块(二)

目录 一. 常用模块 - hashlib 二. 常用模块 - hmac 三. 常用模块 - logging 四. 常用模块 - re 五. 常用模块 - requests 六. 常用模块 - paramiko 一. 常用模块 - hashlib hash: 一种算法, 3.x里代替了md5模块和sha模块, 主要提供 SHA1, SHA224, SHA256, SHA384, SHA512, MD5 …

UART介绍

1. 概述 UART, Universal Asynchronous Receiver-Transmitter, 通用异步收发器&#xff1b; 串口&#xff1a;在嵌入式里指的是UART口&#xff0c;常用TTL电平即3.3V或者5.0V&#xff1b; COM口&#xff1a;在台式机上常用的口&#xff0c;DB9那种接口&#xff0c;接口协议只…

mongodb环境安装

1、mongodb安装 我采用的是离线安装&#xff0c; &#xff08;1&#xff09;在mongodb的官方网址下载所需要的版本。我下载的是 mongodb-linux-x86_64-ubuntu1604-3.4.5.tgz 。 &#xff08;2&#xff09;下载后解压缩到待安装目录&#xff0c;我这里下载在了Downloads目录…

IIC 总线接口详细介绍

1. 概述 IIC Inter Integrated-Circuit 总线是PHLIPS公司推出的一种串行总线&#xff0c;是具备多主机系统所需的包括总线裁决和高低速器件同步功能的高性能串行总线&#xff0c;它支持多主控(multimastering)&#xff0c;其中任何能够进行发送和接收的设备都可以成为主总线。…

Android JNI开发系列(二)HelloWorld

2019独角兽企业重金招聘Python工程师标准>>> 入门HelloWorld 新建项目 Configure your new project部分选中 Include C Support 复选框 Next 正常填写所有其他字段并完成向导接下来几个部分 在向导的Customize C Support 部分&#xff0c;您可以使用谢列选项自定…

sublime text3安装js提示的插件

今天安装Sublime Text3的js插件&#xff0c;在网上查了很多资料&#xff0c;为了方便以后看&#xff0c;写一个安装插件的总结和方法。 要安装js相关的插件&#xff0c;就要先安装一个Package Control&#xff08;插件管理器&#xff09;的插件&#xff0c;通过这个插件再去安装…

SPI接口详细介绍

1. 概述 SPI Serial Peripheral Interface&#xff0c;是串行外围设备接口&#xff0c;是一种高速&#xff0c;全双工&#xff0c;同步的通信总线。常规只占用四根线&#xff0c;节约了芯片管脚&#xff0c;PCB的布局省空间。现在越来越多的芯片集成了这种通信协议&#xff0…

H.264 Profile、Level、Encoder三张简图

H.264有四种画质级别,分别是BP、EP、MP、HP&#xff1a; 1、BP-Baseline Profile&#xff1a;基本画质。支持I/P 帧&#xff0c;只支持无交错&#xff08;Progressive&#xff09;和CAVLC&#xff1b;   2、EP-Extended profile&#xff1a;进阶画质。支持I/P/B/SP/SI 帧&…

智能音箱 之 平台方案简介

智能音箱&#xff0c;被认为是物联网时代的入口&#xff0c;在去年成为了各大厂商争相投入的风口。在当今互联网时代&#xff0c;它不仅仅是一台单纯的音乐播放器&#xff0c;在其背后支撑的 AI 技术才是整个产品的核心&#xff0c;也是各大公司觊觎物联网入口的最根本原因。经…

Linux编程 23 shell编程(结构化条件判断 命令if -then , if-then ... elif-then ...else,if test)...

一.概述 在上一篇里讲到了shell脚本&#xff0c;shell按照命令在脚本中出现的顺序依次进行处理&#xff0c;对于顺序操作已经足够了&#xff0c;但许多程序要求对shell脚本中的命令加入一些逻辑流程控制&#xff0c;这样的命令通常叫做 结构化命令。 1.1 使用if - then语句 --最…

IIS接口详细介绍

1. 概述 I2S Inter-IC Sound Integrated Interchip Sound IIS&#xff0c;是飞利浦在1986年定义&#xff08;1996年修订&#xff09;的数字音频传输标准&#xff0c;用于数字音频数据在系统内器件之间传输&#xff0c;例如编解码器CODEC、DSP、数字输入/输出接口、ADC、DAC…