【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.pswp.cn/news/253372.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/253372.shtml
英文地址,請注明出處:http://en.pswp.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;近十年來云計算的發展將算力、存儲、帶寬全部集中在中央部分&…