BZOJ 3601 一个人的数论 (拉格朗日插值+莫比乌斯反演)

时间:2021-09-11 01:06:26

题意

题解

orz Freopen的博客

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 一个人的数论 (拉格朗日插值+莫比乌斯反演)的更多相关文章

  1. BZOJ&period;2655&period;calc&lpar;DP&sol;容斥 拉格朗日插值&rpar;

    BZOJ 洛谷 待补.刚刚政治会考完来把它补上了2333.考数学去了. DP: 首先把无序化成有序,选严格递增的数,最后乘个\(n!\). 然后容易想到令\(f_{i,j}\)表示到第\(i\)个数, ...

  2. BZOJ&period;5339&period;&lbrack;TJOI2018&rsqb;教科书般的*&lpar;拉格朗日插值&rpar; &amp&semi; 拉格朗日插值学习笔记

    BZOJ 洛谷 题意的一点说明: \(k\)次方这个\(k\)是固定的,也就是最初需要多少张*,每次不会改变: 因某个怪物死亡引发的*不会计分. 不难发现当前所需的张数是空格数+1,即\(m+1\ ...

  3. 【BZOJ】3453&colon; 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$$ [算法]拉格朗日 ...

  4. bzoj 4559 &lbrack;JLoi2016&rsqb;成绩比较 —— DP&plus;拉格朗日插值

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

  5. BZOJ 5330 Luogu P4607 &lbrack;SDOI2018&rsqb;反回文串 &lpar;莫比乌斯反演、Pollard Rho算法&rpar;

    题目链接 (BZOJ) https://www.lydsy.com/JudgeOnline/problem.php?id=5330 (Luogu) https://www.luogu.org/prob ...

  6. BZOJ 3601&colon; 一个人的数论

    题目链接:www.lydsy.com/JudgeOnline/problem.php?id=3601 题意: 思路: 因此可以用高斯消元得到ai. const int mod=1000000007; ...

  7. BZOJ 3601 一个人的数论 ——莫比乌斯反演 高斯消元

    http://www.cnblogs.com/jianglangcaijin/p/4033399.html ——lych_cys 我还是太菜了,考虑一个函数的值得时候,首先考虑是否积性函数,不行的话就 ...

  8. 牛客Wannafly挑战赛23F&Tab;计数&lpar;循环卷积&plus;拉格朗日插值&sol;单位根反演&rpar;

    传送门 直接的想法就是设 \(x^k\) 为边权,矩阵树定理一波后取出 \(x^{nk}\) 的系数即可 也就是求出模 \(x^k\) 意义下的循环卷积的常数项 考虑插值出最后多项式,类比 \(DFT ...

  9. BZOJ3561 DZY Loves Math VI 数论 快速幂 莫比乌斯反演

    原文链接http://www.cnblogs.com/zhouzhendong/p/8116330.html UPD(2018-03-26):回来重新学数论啦.之前的博客版面放在更新之后的后面. 题目 ...

随机推荐

  1. EasyUI弹出窗口实例

    效果体验:http://hovertree.com/texiao/jeasyui/1.htm 源代码下载:HovertreeJEasyUI HTML文件代码: <!DOCTYPE html&gt ...

  2. &ast;&ast;&ast;CI新增记录成功后的返回值判断,是用isset还是empty

    Q: 新增记录插入成功后,加了一个return $this->db->insert_id(); $digg_id = $this->m_feed_digg->create(js ...

  3. Python pandas 0&period;19&period;1 Intro to Data Structures 数据结构介绍 文档翻译

    官方文档链接http://pandas.pydata.org/pandas-docs/stable/dsintro.html 数据结构介绍 我们将以一个快速的.非全面的pandas的基础数据结构概述来 ...

  4. spring学习总结——装配Bean学习三(xml装配bean)

    通过XML装配bean Spring现在有了强大的自动化配置和基于Java的配置,XML不应该再是你的第一选择了.不过,鉴于已经存在那么多基于XML的Spring配置,所以理解如何在Spring中使用 ...

  5. Atitit 关于共享经济之共享男女朋友的创业计划

    Atitit 关于共享经济之共享男女朋友的创业计划 1. 共享经济的历史与趋势 1 1.1. 共享经济三大特征=产能过剩+共享平台+人人参与. 1 1.2. 共享经济是个大趋势,使用权渐渐的取代所有权 ...

  6. python&lowbar;str 字符串的所有方法

    # _Author:huang# date: 2017/11/28 # 字符串 '''print("hello" * 3)print("hello world" ...

  7. 实现Repeater控件的记录单选&lpar;二&rpar;

    前一篇<实现Repeater控件的记录单选>http://www.cnblogs.com/insus/p/7426334.html 虽然可以实现对Repeater控件的记录进行单选,但是, ...

  8. mvc4使用KindEditor文本编辑器

    最近做项目要用文本编辑器,编辑器好多种,这里介绍KindEditor在asp.net mvc4中的使用方法. 一.准备工作: 1.下载KindEditor.去官网:http://www.kindsof ...

  9. pgm4

    这部分 cover 两个比较特殊的情形,一个是 Gaussian networks,一个是 exponential family. 正态分布常见的参数化策略是均值 和协方差矩阵 ,另一种是使用 inf ...

  10. 16)maven lifecycle

    http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html http://maven.apache.o ...