题解 P6271 [湖北省队互测2014]一个人的数论
通过这道题学了伯努利数,写篇题解推一下
先推一下式子
\]
\]
\]
\]
我们发现这个东西不好预处理,那么我们再简化一下。
设 \(S_k(n)=\sum_{i=1}^{n-1}i^k\)
则原式等于
\]
\]
\(\sum_{k|n}\mu(k)\) 等价与 \([n=1]\),而本题中 \(n\) 不可能为 \(1\),所以原式为
\]
设 \(f_i\) 为在伯努利公式中 \(i\) 次幂的系数
\]
\]
\]
我们会发现式子后半部分就是 \((\mu×id_{d-i})*I\),所以肯定是一个积性函数。
设 \(F(n)=\sum_{k|n}\mu(k)k^{d-i},G(p)=\mu(p)p^{d-i},F(n)=\sum_{p|n}G(p)\)
考虑质数取值:
\begin{array}{lcl}
1\kern 2.2em(p=1)\\
-p^{d-i}\kern 1.0em(p\in prime)\\
\end{array}
\right.
\]
由 \(\mu\) 的性质,可以得出上式当 \(n\in prime\) 时,\(F(n)=1-n^{d-i}\)
所以总的复杂度即为 \(O(d^2+dw)\),\(d^2\) 为预处理 \(f_i\) 。
\(AC \kern 0.4emCODE:\)
#include<bits/stdc++.h>
#define ri register int
#define p(i) ++i
using namespace std;
const int MOD=1e9+7,W=1010,D=107;
inline int read() {
int x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}
return x*f;
}
inline int fpow(int x,int y) {
int res=1;
while(y) {
if (y&1) res=1ll*res*x%MOD;
x=1ll*x*x%MOD;y>>=1;
}
return res;
}
inline int inv(int x) {return fpow(x,MOD-2);}
int frac[D],invf[D];
void init(int k) {
frac[0]=1;
for (ri i(1);i<=k;p(i)) frac[i]=1ll*frac[i-1]*i%MOD;
invf[k]=inv(frac[k]);
for (ri i(k);i;--i) invf[i-1]=1ll*invf[i]*i%MOD;
}
inline int C(int n,int m) {return 1ll*frac[n]*invf[m]%MOD*invf[n-m]%MOD;}
struct Bernou{
int B[D],f[D];
inline void Bernoulli(int k) {
B[0]=1;
for (ri i(1);i<=k;p(i)) {
int sum=0;
for (ri j(0);j<i;p(j)) sum=(sum+1ll*C(i+1,j)*B[j]%MOD)%MOD;
B[i]=(0-1ll*sum*inv(i+1)%MOD+MOD)%MOD;
}
int INV=inv(k+1);
for (ri i(0);i<=k;p(i)) f[k+1-i]=1ll*C(k+1,i)*B[i]%MOD*INV%MOD;
}
}B;
int d,w,p[W],a[W];
inline int Sum(int cm) {
if (cm<0) cm=MOD-2;
int res=1;
for (ri i(1);i<=w;p(i)) res=1ll*res*(1-fpow(p[i],cm)+MOD)%MOD;
return res;
}
int main() {
d=read(),w=read();
init(d+3);B.Bernoulli(d);
for (ri i(1);i<=w;p(i)) p[i]=read(),a[i]=read();
int ans=0,n=1;
for (ri i(1);i<=w;p(i)) n=1ll*n*fpow(p[i],a[i])%MOD;
for (ri i(1),cm(1);i<=d+1;p(i)) {
cm=1ll*cm*n%MOD;
ans=(ans+1ll*B.f[i]*cm%MOD*Sum(d-i)%MOD)%MOD;
}
printf("%d\n",ans);
return 0;
}
题解 P6271 [湖北省队互测2014]一个人的数论的更多相关文章
- [bzoj3670][2014湖北省队互测week2]似乎在梦中见过的样子
Description 已知一个字符串S,求它有多少个形如A+B+A的子串(len(A)>=k,len(B)>=1 ). Input 第一行一个字符串,第二行一个数 k. Output 仅 ...
- bug运输[辽宁2014年省队互测一]
奇奇怪怪的题目,不知道他要我们干什么. 我们观察一波局势,发现答案最大不过5.因为如果答案是6或以上的话,我们就至少要2^(5*5)个5*5的方格. 仔细计算一波时间复杂度,再信仰一波,坚信暴力压正解 ...
- STOI补番队互测#2
Round2轮到我出了>_<(目测总共10人参加 实际共七人) 具体情况: #1: KPM,360 #2:ccz181078,160 #3:child,150 可惜KPM没看到第一题样例里 ...
- 【河北省队互测】 gcd BZOJ 2818
Description 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的 数对(x,y)有多少对. Input 一个整数N Output 如题 Sample Input 4 Sa ...
- GCD BZOJ2818 [省队互测] 数学
题目描述 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对. 输入输出格式 输入格式: 一个整数N 输出格式: 答案 输入输出样例 输入样例#1: 复制 4 ...
- 【loj2461】【2018集训队互测Day 1】完美的队列
#2461. 「2018 集训队互测 Day 1」完美的队列 传送门: https://loj.ac/problem/2461 题解: 直接做可能一次操作加入队列同时会弹出很多数字,无法维护:一个操作 ...
- 【2018集训队互测】【XSY3372】取石子
题目来源:2018集训队互测 Round17 T2 题意: 题解: 显然我是不可能想出来的……但是觉得这题题解太神了就来搬(chao)一下……Orzpyz! 显然不会无解…… 为了方便计算石子个数,在 ...
- 洛谷 P4463 - [集训队互测 2012] calc(多项式)
题面传送门 & 加强版题面传送门 竟然能独立做出 jxd 互测的题(及其加强版),震撼震撼(((故写题解以祭之 首先由于 \(a_1,a_2,\cdots,a_n\) 互不相同,故可以考虑求出 ...
- 【CH 弱省互测 Round #1 】OVOO(可持久化可并堆)
Description 给定一颗 \(n\) 个点的树,带边权. 你可以选出一个包含 \(1\) 顶点的连通块,连通块的权值为连接块内这些点的边权和. 求一种选法,使得这个选法的权值是所有选法中第 \ ...
随机推荐
- FA转发地址
1.FA地址诞生背景和作用 FA 是Forwarding Address的简写.FA是ASBR通告的TYPE 5 LSA中的字段,它的作用是告诉OSPF域内的路由器如何能够更快捷地到达LSA 5所通告 ...
- ZSH主题
All the current themes can be found in the themes/ directory in the oh-my-zsh distribution. See list ...
- SDN开发环境搭建以及Mininet编程
一.实验内容 搭建如下网络拓扑,并熟悉相关指令. 二.搭建开发环境 2.1 开发环境搭建 2.1.1下载ubuntu镜像文件 镜像下载地址 https://www.ubuntu.com/downl ...
- 如何使用powershell操作json对象
读取Json文件 $dataTransformerDirPath为读取Json文件的目录 点击查看代码 # 读取文件 UTF8-NOBOM function ReadFile($path) { ret ...
- C语言:toascii()函数
/* 头文件:#include <ctype.h> 定义函数:int toascii(int c); 函数说明:toascii()会将参数c 转换成7 位的unsigned char 值, ...
- JDK安装与环境搭建.
卸载JDK 1.删除Java安装目录 2.删除Java Home 3.删除path下Java的目录 4.打开cmd命令输入java-version 出现''不是内部或外部命令,也不是可运行的程序 或批 ...
- 【LeetCode】933.最近的请求次数
933.最近的请求次数 知识点:队列: 题目描述 写一个 RecentCounter 类来计算特定时间范围内最近的请求. 请你实现 RecentCounter 类: RecentCounter() 初 ...
- 单机版kafka的安装
简单记录单机版kafka的安装:JDK1.8(jdk-8u131-linux-x64.rpm)zookeeper (zookeeper-3.4.10.tar.gz)kafka (kafka_2.12- ...
- ThinkPHP3.2.3 语言包切换中英文切换
今天要用ThinkPHP3.2.3做一个小网站,其中涉及到切换中文与英文,通过查询手册和百度实现了该操作,现在将我具体的操作步骤记录下来,作为笔记和大家分享. php开发框架:ThinkPHP3.2. ...
- CF459E-DP
CF459E-DP 核心代码15行 思路 观察数据范围,我们建m层分层图跑最短路想到DP. DP最大的特点就是无后效性.那么我们这一题哪个条件无后效性呢? 发现DP值一定从边权小于当前点的位置转移而来 ...