BZOJ 3601 一个人的数论 (拉格朗日插值+莫比乌斯反演)
题意
略
题解
CODE
#pragma GCC optimize (3)
#include <bits/stdc++.h>
using namespace std;
char cb[1<<15],*cs=cb,*ct=cb;
#define getc() (cs==ct&&(ct=(cs=cb)+fread(cb,1,1<<15,stdin),cs==ct)?0:*cs++)
void read(int &res){
char ch; for(;!isdigit(ch=getc()););
for(res=ch-'0';isdigit(ch=getc());res=res*10+ch-'0');
}
const int MAXD = 105;
const int MAXN = 1005;
const int mod = 1e9 + 7;
int d, n, p[MAXN], a[MAXN];
int inv[MAXD], invf[MAXD], rinv[MAXD];
int y[MAXD], cf[MAXD], dp[MAXD];
inline int qpow(int a, int b) {
int re = 1;
while(b) {
if(b&1) re = 1ll * re * a % mod;
a = 1ll * a * a % mod; b >>= 1;
}
return re;
}
int main () {
read(d), read(n);
for(int i = 1; i <= n; ++i) read(p[i]), read(a[i]);
dp[0] = 1;
for(int i = 1; i <= d+2; ++i) {
y[i] = (y[i-1] + qpow(i, d)) % mod;
for(int j = d+2; j >= 0; --j)
dp[j] = ((j ? dp[j-1] : 0) - 1ll * dp[j] * i) % mod;
}
inv[0] = invf[0] = rinv[0] = 1;
inv[1] = invf[1] = 1; rinv[1] = -1;
for(int i = 2; i <= d+2; ++i)
inv[i] = 1ll * (mod - mod/i) * inv[mod%i] % mod,
invf[i] = 1ll * invf[i-1] * inv[i] % mod,
rinv[i] = 1ll * rinv[i-1] * (-inv[i]) % mod;
for(int i = 1; i <= d+2; ++i) {
for(int j = 0; j <= d+2; ++j) {
dp[j] = 1ll * ((j ? dp[j-1] : 0) - dp[j]) * inv[i] % mod;
cf[j] = (cf[j] + 1ll * dp[j] * invf[i-1] % mod * rinv[d+2-i] % mod * y[i]) % mod;
}
for(int j = d+2; j >= 0; --j)
dp[j] = ((j ? dp[j-1] : 0) - 1ll * dp[j] * i % mod) % mod;
}
int ans = 0;
for(int i = 0; i <= d+1; ++i) {
int tmp = 1;
for(int j = 1; j <= n; ++j)
tmp = 1ll * tmp * (qpow(qpow(p[j], a[j]), i) - 1ll * qpow(p[j], d) * qpow(qpow(p[j], a[j]-1), i) % mod) % mod;
ans = (ans + 1ll * tmp * cf[i] % mod) % mod;
}
printf("%d\n", (ans + mod) % mod);
}
BZOJ 3601 一个人的数论 (拉格朗日插值+莫比乌斯反演)的更多相关文章
- BZOJ.2655.calc(DP/容斥 拉格朗日插值)
BZOJ 洛谷 待补.刚刚政治会考完来把它补上了2333.考数学去了. DP: 首先把无序化成有序,选严格递增的数,最后乘个\(n!\). 然后容易想到令\(f_{i,j}\)表示到第\(i\)个数, ...
- BZOJ.5339.[TJOI2018]教科书般的亵渎(拉格朗日插值) & 拉格朗日插值学习笔记
BZOJ 洛谷 题意的一点说明: \(k\)次方这个\(k\)是固定的,也就是最初需要多少张亵渎,每次不会改变: 因某个怪物死亡引发的亵渎不会计分. 不难发现当前所需的张数是空格数+1,即\(m+1\ ...
- 【BZOJ】3453: tyvj 1858 XLkxc 拉格朗日插值(自然数幂和)
[题意]给定k<=123,a,n,d<=10^9,求: $$f(n)=\sum_{i=0}^{n}\sum_{j=1}^{a+id}\sum_{x=1}^{j}x^k$$ [算法]拉格朗日 ...
- bzoj 4559 [JLoi2016]成绩比较 —— DP+拉格朗日插值
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4559 看了看拉格朗日插值:http://www.cnblogs.com/ECJTUACM-8 ...
- BZOJ 5330 Luogu P4607 [SDOI2018]反回文串 (莫比乌斯反演、Pollard Rho算法)
题目链接 (BZOJ) https://www.lydsy.com/JudgeOnline/problem.php?id=5330 (Luogu) https://www.luogu.org/prob ...
- BZOJ 3601: 一个人的数论
题目链接:www.lydsy.com/JudgeOnline/problem.php?id=3601 题意: 思路: 因此可以用高斯消元得到ai. const int mod=1000000007; ...
- BZOJ 3601 一个人的数论 ——莫比乌斯反演 高斯消元
http://www.cnblogs.com/jianglangcaijin/p/4033399.html ——lych_cys 我还是太菜了,考虑一个函数的值得时候,首先考虑是否积性函数,不行的话就 ...
- 牛客Wannafly挑战赛23F 计数(循环卷积+拉格朗日插值/单位根反演)
传送门 直接的想法就是设 \(x^k\) 为边权,矩阵树定理一波后取出 \(x^{nk}\) 的系数即可 也就是求出模 \(x^k\) 意义下的循环卷积的常数项 考虑插值出最后多项式,类比 \(DFT ...
- BZOJ3561 DZY Loves Math VI 数论 快速幂 莫比乌斯反演
原文链接http://www.cnblogs.com/zhouzhendong/p/8116330.html UPD(2018-03-26):回来重新学数论啦.之前的博客版面放在更新之后的后面. 题目 ...
随机推荐
- [转帖]QC 和 PD:关于你所不知道的快充
QC 和 PD:关于你所不知道的快充 http://www.sohu.com/a/276214250_465976 2018-11-18 06:02 当我们使用支持 PD 或者 QC 快充协议的电源适 ...
- Tomcat中不能通过访问自己IP,但可以通过localhost/127.0.0.1访问
一.问题如下:局域网内,自己机器部署了一个tomcat应用,在本机上可以通过如下方式访问引用. http://localhost:8080/xxxx http://127.0.0.1:8080/xx ...
- 第五章 模块之 logging、copy、re
5.12 logging 日志模块 报警等级 CRITICAL = 50 # 最高FATAL = CRITICALERROR = 40WARNING = 30WARN = WARNINGINFO = ...
- beego入门笔记
Beego Learn Note 示例环境在Deepin系统下. deepin 15.9.3 ├── Beego : 1.11.2 ├── GoVersion : go1.12.4 ├── GOOS ...
- 如何使用Class和ClassLoader加载文件
很多时候我们都需要在程序中加载各种文件,比如在加载配置文件,加载properties文件,或者只是加载一个文本文件,然后输出其中的内容,我在初学java的时候,就对加载文件非常头疼,今天又遇见了加载文 ...
- openstack-neutron(2)
VXLAN 独立于底层的网络拓扑:反过来,两个 VTEP 之间的底层 IP 网络也独立于 VXLAN.VXLAN 数据包是根据外层的 IP header 路由的,该 header 将两端的 VTEP ...
- iOS - 性能优化:Instruments使用简介
最近采用Instruments 来分析整个应用程序的性能.发现很多有意思的点,以及性能优化和一些分析性能消耗的技巧,小结如下. Instruments使用技巧 关于Instruments官方有一个很有 ...
- Hadoop HA 搭建
Hadoop HA 什么是 HA HA是High Available缩写,是双机集群系统简称,指高可用性集群,是保证业务连续性的有效解决方案,一般有两个或两个以上的节点,且分为活动节点及备用节点.通常 ...
- 如何设置MySql Server远程访问(Debian Linux)
1. 登录Mysql Server: $mysql -u root -p 2. 检查网络,Server是否允许远程连接: mysql> show variables like '%skip_ne ...
- SHELL字符串处理技巧(${}、##、%%)
在SHELL编程中,经常要处理一些字符串变量.比如,计算长度啊.截取子串啊.字符替换啊等等,常常要用到awk.expr.sed.tr等命令.下面给大家介绍个简单的字符串处理方法,用不着嵌套复杂的子 ...