tyvj 1858 XLkxc

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

Description

神犇LYD虐完HEOI之后给傻×XLk出了一题:
SHY是某国的公主,平时的一大爱好是读诗...(中间略)...结果mod p就可以了

简明题意
给定 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

对于所有数据
1<=k<=123
0<=a,n,d<=123456789
p==1234567891

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

Source

这些是很明显的,因为这个就是需要求的东西。

然后接下来怎么处理是关键。

对我来说的话,应该是手足无措的,但是某些大佬将其作差,

对于g作k+3次差分后其项为0,所以说g是一个最高项为k+2次的多项式,

对于f 作k+5次差分后其项为0,所以说f 是一个最高项为k+4次的多项式

所以说,因为k不大,所以每次O(k^2)的时间求出g,前缀和一下就可以了

然后知道了f的点值后就可以再一次k^2的时间求出n的值

复杂度是Tk^3

第64行中求值的时候取模的可以将每一项都模p,这个应该可以理解

 1 #include<cstring>
 2 #include<iostream>
 3 #include<cstdio>
 4 #include<algorithm>
 5 #include<cmath>
 6
 7 #define p 1234567891
 8 #define N 157
 9 #define ll long long
10 using namespace std;
11 inline int read()
12 {
13     int x=0,f=1;char ch=getchar();
14     while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}
15     while(isdigit(ch)){x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}
16     return x*f;
17 }
18
19 ll a,n,d,m,k;
20 ll s1[N],s2[N];
21 ll g[N],f[N],inv[N<<1];
22
23 ll fast_pow(ll a,ll b)
24 {
25     ll ans=1;
26     while(b)
27     {
28         if (b&1) (ans*=a)%=p;
29         (a*=a)%=p;
30         b>>=1;
31     }
32     return ans;
33 }
34 inline ll Lagrange(ll *a,int n,ll pos)
35 {
36     if (pos<=n) return a[pos];
37     ll ans=0;
38     for (int i=1;i<=n;i++)
39     {
40         ll s1=1,s2=1;
41         for (int j=1;j<=n;j++)
42             if (i!=j)
43             {
44                 (s1*=(pos-j))%=p;
45                 (s2*=(i-j))%=p;
46             }
47         (ans+=a[i]*s1%p*fast_pow(s2,p-2))%=p;
48     }
49     return ans;
50 }
51 int main()
52 {
53     freopen("fzy.in","r",stdin);
54     freopen("fzy.out","w",stdout);
55
56     int T=read();
57     while(T--)
58     {
59         k=read(),a=read(),n=read(),d=read();
60         for (int i=1;i<=k+3;i++) g[i]=fast_pow(i,k);
61         for (int i=2;i<=k+3;i++) (g[i]+=g[i-1])%=p;
62         for (int i=2;i<=k+3;i++) (g[i]+=g[i-1])%=p;
63         f[0]=Lagrange(g,k+3,a);
64         for (int i=1;i<=k+5;i++) f[i]=Lagrange(g,k+3,(i*d+a)%p),(f[i]+=f[i-1])%=p;
65         printf("%lld\n",(Lagrange(f,k+5,n)+p)%p);
66     }
67 }

转载于:https://www.cnblogs.com/fengzhiyuan/p/8646464.html

bzoj 3453 tyvj 1858 XLkxc 拉格朗日插值相关推荐

  1. 【BZOJ】2655: calc 动态规划+拉格朗日插值

    [题意]一个序列$a_1,...,a_n$合法当且仅当它们都是[1,A]中的数字且互不相同,一个序列的价值定义为数字的乘积,求所有序列的价值和.n<=500,A<=10^9,n+1< ...

  2. BZOJ 2137 submultiple(约数,拉格朗日插值求自然数k次幂和)【BZOJ 修复工程】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/2137 是 hydro 的 BZOJ ...

  3. bzoj 5339 [TJOI2018]教科书般的亵渎 拉格朗日插值

    题面 题目传送门 解法 可以发现,题目可以转化成求若干个形如\(\sum_{i=1}^ni^k\)的东西 这个东西可以拉格朗日插值 大概讲一下拉格朗日插值是个什么东西: 显然,\(\sum_{i=1} ...

  4. bzoj 4559 [JLoi2016]成绩比较 —— DP+拉格朗日插值

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4559 看了看拉格朗日插值:http://www.cnblogs.com/ECJTUACM-8 ...

  5. 解题报告(三)多项式求值与插值(拉格朗日插值)(ACM / OI)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...

  6. P6271 [湖北省队互测2014]一个人的数论(莫比乌斯反演,拉格朗日插值)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 P6271 [湖北省队互测2014]一个人的数论(莫比乌斯反演,拉格朗日插值) Problem Sol ...

  7. 牛客挑战赛36 D. 排名估算( “概率论全家桶”,好题,拉格朗日插值求自然数 k 次幂之和)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Weblink https://ac.nowcoder.com/acm/contest/3782/D ...

  8. P5667 拉格朗日插值2(拉格朗日插值,NTT, 倒推求逆元)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Weblink https://www.luogu.com.cn/problem/P5667 Prob ...

  9. 【学习笔记】拉格朗日插值

    整理的算法模板合集: ACM模板 目录 P4781 [模板]拉格朗日插值 重心拉格朗日插值法 拉格朗日插值法求系数 自然数k次幂的和 点我看多项式全家桶(●'◡'●) P4781 [模板]拉格朗日插值 ...

最新文章

  1. 一个较为详细的ETL系统实现方案
  2. String.replaceAll() 正则表达式
  3. 调整cpu和内存查看子机配置
  4. pythonui自动化测试平台_django+appium实现UI自动化测试平台(开源部分,可定制开发)...
  5. 原码,反码,补码,移码四种机器码的表示方法及0的四种表示方法
  6. 移动端返回上一页实现方法
  7. AI本质就是“暴力计算”?看华为云如何应对算力挑战
  8. 查看欧拉系统服务器ip,euler os 查看center进程命令
  9. 稳扎稳打Silverlight(25) - 2.0线程之Thread, Timer, BackgroundWorker, ThreadPool
  10. 【图文详解】,配置NLB群集
  11. webstrom默认是白色背景,如何修改
  12. java day58【 案例:使用 spring 的 IoC 的实现账户的 CRUD 、 基于注解的 IOC 配置 、 Spring 整合 Junit[掌握] 】...
  13. 链表节点的删除(链表data升序有重复)
  14. AMPL实现中国邮递员问题,你get到了吗
  15. 邮政社招笔试题库_中国邮政招聘笔试:笔试练习题1
  16. 数据驱动的综合能源系统
  17. 安全测试之sql注入
  18. git通过http的方式下载和提交代码
  19. 苹果删文件后无服务器,iOS13描述文件可以删除吗?iPhone删除描述文件图文教程...
  20. 疯狂打CALL,机器人抢镜时尚大典

热门文章

  1. [架构之路-190]-《软考-系统分析师》-4-据通信与计算机网络-5-图解CRC计算方法与步骤
  2. swagger2 域名访问问题,改变Request URL 属性
  3. Fmoc-NH-PEG-COOH芴甲氧基羰基保护氨基-聚乙二醇-羧基;PEG分子量2000
  4. 2019清华大学计算机专业分数线,清华大学专业目录 2019录取分数线是多少
  5. 清华计算机系转专业,清华大学可以转专业吗 清华大学新生转专业政策
  6. AES cbc加密开源库收集
  7. rpm和yum/dnf 安装方式与区别
  8. 个人博客上线了!!!(官宣
  9. 什么是用户标签?其实很好理解
  10. go get google.golang.org/grpc 解决办法汇总