【BZOJ4126】【BZOJ3516】【BZOJ3157】国王奇遇记 线性插值
题目描述
三倍经验题。
给你\(n,m\),求
\]
\(n\leq {10}^9,1\leq m\leq 500000\)
题解
当\(m=1\)时\(ans=\frac{n(n+1)}{2}\)
剩下的部分这篇博客有讲YWW's Blog
时间复杂度:\(O(m+\log n)\)
代码
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
const ll p=1000000007;
ll fp(ll a,ll b)
{
ll s=1;
for(;b;b>>=1,a=a*a%p)
if(b&1)
s=s*a%p;
return s;
}
int pri[100010];
int b[1000010];
int cnt;
ll s[1000010];
ll fac[1000010];
ll ifac[1000010];
ll inv[1000010];
ll f1[1000010];
ll f2[1000010];
ll f[1000010];
ll pre[1000010];
ll suf[1000010];
ll getc(int x,int y)
{
return fac[x]*ifac[y]%p*ifac[x-y]%p;
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("bzoj4126.in","r",stdin);
freopen("bzoj4126.out","w",stdout);
#endif
int n,m;
scanf("%d%d",&n,&m);
if(m==1)
{
printf("%lld\n",ll(n)*(n+1)/2%p);
return 0;
}
n++;
fac[0]=fac[1]=ifac[0]=ifac[1]=inv[1]=1;
for(int i=2;i<=m+2;i++)
{
inv[i]=-p/i*inv[p%i]%p;
ifac[i]=ifac[i-1]*inv[i]%p;
fac[i]=fac[i-1]*i%p;
}
s[0]=0;
s[1]=1;
for(int i=2;i<=m+2;i++)
{
if(!b[i])
{
s[i]=fp(i,m);
pri[++cnt]=i;
}
for(int j=1;j<=cnt&&i*pri[j]<=m+2;j++)
{
b[i*pri[j]]=1;
s[i*pri[j]]=s[i]*s[pri[j]]%p;
if(i%pri[j]==0)
break;
}
}
f1[0]=1;
f2[0]=0;
ll invm=fp(m,p-2);
for(int i=1;i<=m+1;i++)
{
f1[i]=f1[i-1]*invm%p;
f2[i]=(f2[i-1]+s[i-1])*invm%p;
}
ll v1=0,v2=0;
for(int i=0;i<=m+1;i++)
{
v1=(v1+((m+1-i)&1?-1:1)*getc(m+1,i)*f1[i])%p;
v2=(v2+((m+1-i)&1?-1:1)*getc(m+1,i)*f2[i])%p;
}
f[0]=-v2*fp(v1,p-2)%p;
for(int i=1;i<=m+1;i++)
f[i]=(f1[i]*f[0]+f2[i])%p;
if(n<=m+1)
{
ll ans=fp(m,n)*f[n]-f[0];
ans=(ans%p+p)%p;
printf("%lld\n",ans);
return 0;
}
for(int i=0;i<=m;i++)
{
pre[i]=n-i;
if(i)
pre[i]=pre[i-1]*pre[i]%p;
}
for(int i=m;i>=0;i--)
{
suf[i]=n-i;
if(i!=m)
suf[i]=suf[i+1]*suf[i]%p;
}
ll ans=0;
for(int i=0;i<=m;i++)
{
ll v=1;
if(i)
v=v*pre[i-1]%p;
if(i!=m)
v=v*suf[i+1]%p;
ans=(ans+f[i]*v%p*ifac[i]%p*ifac[m-i]%p*((m-i)&1?-1:1))%p;
}
ans=fp(m,n)*ans-f[0];
ans=(ans%p+p)%p;
printf("%lld\n",ans);
return 0;
}
【BZOJ4126】【BZOJ3516】【BZOJ3157】国王奇遇记 线性插值的更多相关文章
- bzoj3157: 国王奇遇记
emmm...... 直接看题解好了: BZOJ-3157. 国王奇遇记 – Miskcoo's Space O(m)不懂扔掉 总之,给我们另一个处理复杂求和的方法: 找到函数之间的递推公式! 这里用 ...
- bzoj3157国王奇遇记(秦九韶算法+矩乘)&&bzoj233AC达成
bz第233题,用一种233333333的做法过掉了(为啥我YY出一个算法来就是全网最慢的啊...) 题意:求sigma{(i^m)*(m^i),1<=i<=n},n<=10^9,m ...
- BZOJ3157: 国王奇遇记 & 3516: 国王奇遇记加强版
令\[S_i=\sum_{k=1}^n k^i m^k\]我们有\[\begin{eqnarray*}(m-1)S_i & = & mS_i - S_i \\& = & ...
- 扰动法--*BZOJ3157: 国王奇遇记
求$\sum_{i=1}^ni^mm^i$.$n \leq 1e9,m \leq 200$. 其实我也不知道这东西为啥叫“扰动法”,大概是在黑暗的边缘试探?就是那种,人家再多一点就被您看破了,然后您就 ...
- BZOJ3157 国王奇遇记——神奇的推式子
先膜一发Miskcoo,大佬的博客上多项式相关的非常全 原题戳我 题目大意 求 \[\sum\limits_{i=1}^{n}i^mm^i\] 题解 设一个函数\(f(i)=\sum\limits_{ ...
- 【BZOJ3157/3516】国王奇遇记(数论)
[BZOJ3157/3516]国王奇遇记(数论) 题面 BZOJ3157 BZOJ3516 题解 先考虑怎么做\(m\le 100\)的情况. 令\(f(n,k)=\displaystyle \sum ...
- 【BZOJ】【3157】&【BZOJ】【3516】国王奇遇记
数论 题解:http://www.cnblogs.com/zhuohan123/p/3726933.html copy一下推导过程: 令$$S_i=\sum_{k=1}^{n}k^im^k$$ 我们有 ...
- BZOJ3157/BZOJ3516 国王奇遇记(矩阵快速幂/数学)
由二项式定理,(m+1)k=ΣC(k,i)*mi.由此可以构造矩阵转移,将mi*ik全部塞进去即可,系数即为组合数*m.复杂度O(m3logn),因为大常数喜闻乐见的T掉了. #include< ...
- bzoj3157 3516 国王奇遇记
Description Input 共一行包括两个正整数N和M. Output 共一行为所求表达式的值对10^9+7取模的值. 特判m=1 m≠1时: 设S[u]=sigma(i^u*m^i) m*S ...
随机推荐
- Django Restframework 过滤器
一.基本配置: 1.安装:pip install django-filter 2.将 django_filters 配置到INSTALLED-APPS中 3.对 REST_FRAMEWORK 配置: ...
- Dockerfile centos7_php5.6.36
Dockerfile: FROM centos:7 MAINTAINER www.ctnrs.com RUN yum install epel-release -y && \ yum ...
- python-BeautifulSoup库详解
快速使用 通过下面的一个例子,对bs4有个简单的了解,以及看一下它的强大之处: from bs4 import BeautifulSoup html = ''' <html><hea ...
- Python-Urllib库详解
官方文档地址:https://docs.python.org/3/library/urllib.html 什么是Urllib: Urllib是python内置的HTTP请求库: urllib.requ ...
- Elasticsearch--Aggregation详细总结(聚合统计)
Elasticsearch的Aggregation功能也异常强悍. Aggregation共分为三种:Metric Aggregations.Bucket Aggregations. Pipeline ...
- YARN的笔记
- Hadoop01的主要总结
Hadoop (离线) 分布式的计算框架 scala---spark(实时计算框架)
- .net WCF WF4.5
花了两天时间学习使用WF,把一些遇到的问题记录下来,使用的环境是VS2017,网上的资料普遍太老了 需要注意,如果使用多项目同时启动的方式需要把WCF调整到WF启动顺序之上 1.怎么使用代码活动 新建 ...
- 如何使用RSS
(转载: http://www.ruanyifeng.com/blog/2006/01/rss.html) 一. 自从我发现很多人不知道什么是RSS以后,我就一直想向大家介绍它,因为它太有用了,将来会 ...
- [转帖]批处理-For详解
批处理-For详解 https://www.cnblogs.com/DswCnblog/p/5435300.html for 循环的写法 感觉非常好. 今天下午的时候简单测试了下. 多学习提高 非常重 ...