题解 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\) 顶点的连通块,连通块的权值为连接块内这些点的边权和. 求一种选法,使得这个选法的权值是所有选法中第 \ ...
随机推荐
- IDA PRO:庆祝成立创新 30 周年
今天,IDA 已经三十岁了.为了纪念周年纪念,我们将描述史诗旅程的开始和主要里程碑. 背景 在 1990 年代初期,DOS 是最流行的 PC 操作系统,主要是 8086,偶尔有 80286(80386 ...
- WPF项目升级sqlite-net-pcl时遇到Library e_sqlite3 not found的问题解决办法记录
项目中为了方便的存储本地数据,使用了SQLite数据库作为数据存储,再设计时DB.models引用了sqlite-net-pcl,那么项目再升级sqlite-net-pc 1.7.335l版本后后,遇 ...
- JDK环境配置: javac is not recognized as an internal or external command, operable program or batch file
相信大家在配置TestNG的时候,首先都会去确认JDK的安装是否正确,两个命令缺一不可. 打开'cmd' --> 1. 输入'java -version', 返回java home当前路径. j ...
- matlab——线性规划
@ 目录 前言 一.基本概念 二.matlab实现 1.常用函数 2.常见变形 参考书目 前言 线性规划是数学规划中的一个重要分支,常用于解决如何利用现有资源来安排生产,以取得最大经济效益的问题.本文 ...
- Python多线程爬取某网站表情包
# 爬取网络图片import requestsfrom lxml import etreefrom urllib import requestfrom queue import Queue # 导入队 ...
- C++第四十七篇 -- VS2017带参数启动调试程序
参考链接:https://www.cnblogs.com/kileyi/p/10163269.html 举例:Test_Bluetooth.exe -help Test_Bluetooth.cpp # ...
- js 数据存入数组
var tag = []; $('.deltag').each(function(){ if($(this).attr("checked")== 'checked'){ tag.p ...
- SpringBoot自动装配-Import
1. 简介 @Import导入的类会被Spring加载到IOC容器中.而@Import提供4中用法: 导入Bean 导入配置类 导入 ImportSelector 实现类.一般用于加载配置文件中的类 ...
- jboss未授权访问
测试 poc地址 https://github.com/joaomatosf/jexboss
- 关于zend guard loard 扩展
官网http://www.zend.com/en/products/loader/downloads#Linux 安装安装在READ.ME中 修改的php.ini是apache那边的 保存,重启下就行 ...