【BZOJ4816】[SDOI2017] 数字表格(莫比乌斯反演)
大致题意: 求\(\prod_{i=1}^n\prod_{j=1}^mf(gcd(i,j))\)。
推式子
首先,按照套路我们枚举\(gcd\),得到:
\]
根据\(\sum_{d|n}\mu(d)=[n=1]\),我们可以再转化得到:
\]
然后我们把对\(p\)的枚举移出来,得到:
\]
这个式子如果直接用除法分块套除法分块,是\(O(n)\)的,但多组数据就\(TLE\)了。
所以我们要进一步优化,枚举\(D=dp\),就可以得到这样一个式子:
\]
其中\(\prod_{d|D}f(d)^{\mu({\frac Dd})}\),我们可以枚举\(d\)以及其倍数\(D\)预处理。
再用除法分块求就是\(O(\sqrt n)\)的了。
代码
#include<bits/stdc++.h>
#define Tp template<typename Ty>
#define Ts template<typename Ty,typename... Ar>
#define Reg register
#define RI Reg int
#define Con const
#define CI Con int&
#define I inline
#define W while
#define N 1000000
#define X 1000000007
#define XSum(x,y) ((x)+(y)>=X?(x)+(y)-X:(x)+(y))
#define Qinv(x) Qpow(x,X-2)
using namespace std;
int n,m,f[N+5],g[N+5],ig[N+5];
I int Qpow(RI x,RI y) {RI t=1;W(y) y&1&&(t=1LL*t*x%X),x=1LL*x*x%X,y>>=1;return t;}//快速幂
template<int SZ> class LinearSiever//线性筛
{
private:
int Pt,P[SZ+5];
public:
int mu[SZ+5];
I LinearSiever()
{
RI i,j;for(mu[1]=1,i=2;i<=SZ;++i)
{
!P[i]&&(mu[P[++Pt]=i]=-1);
for(j=1;j<=Pt&&1LL*i*P[j]<=SZ;++j)
if(P[i*P[j]]=1,i%P[j]) mu[i*P[j]]=-mu[i];else break;
}
}
};LinearSiever<N> L;
int main()
{
RI i,j,p;for(f[1]=g[1]=1,i=2;i<=N;++i) f[i]=XSum(f[i-2],f[i-1]),g[i]=1;//预处理斐波那契数
for(i=2;i<=N;++i) for(p=Qinv(f[i]),j=1;1LL*i*j<=N;++j)//预处理
g[i*j]=1LL*g[i*j]*(L.mu[j]?(~L.mu[j]?f[i]:p):1)%X;
for(g[0]=ig[0]=i=1;i<=N;++i) g[i]=1LL*g[i]*g[i-1]%X,ig[i]=Qinv(g[i]);//求前缀积及逆元
RI Tt,t,l,r,ans;scanf("%d",&Tt);W(Tt--)
{
for(scanf("%d%d",&n,&m),ans=l=1,t=min(n,m);l<=t;l=r+1)//除法分块
{
r=min(n/(n/l),m/(m/l)),
ans=1LL*ans*Qpow(1LL*g[r]*ig[l-1]%X,1LL*(n/l)*(m/l)%(X-1))%X;//计算答案
}printf("%d\n",ans);
}return 0;
}
【BZOJ4816】[SDOI2017] 数字表格(莫比乌斯反演)的更多相关文章
- BZOJ4816 SDOI2017 数字表格 莫比乌斯反演
传送门 做莫比乌斯反演题显著提高了我的\(\LaTeX\)水平 推式子(默认\(N \leq M\),分数下取整,会省略大部分过程) \(\begin{align*} \prod\limits_{i= ...
- [Sdoi2017]数字表格 [莫比乌斯反演]
[Sdoi2017]数字表格 题意:求 \[ \prod_{i=1}^n \prod_{j=1}^m f[(i,j)] \] 考场60分 其实多推一步就推倒了... 因为是乘,我们可以放到幂上 \[ ...
- 【bzoj4816】[Sdoi2017]数字表格 莫比乌斯反演
题目描述 Doris刚刚学习了fibonacci数列.用f[i]表示数列的第i项,那么 f[0]=0 f[1]=1 f[n]=f[n-1]+f[n-2],n>=2 Doris用老师的超级计算机生 ...
- [bzoj4816][Sdoi2017]数字表格 (反演+逆元)
(真不想做莫比乌斯了) 首先根据题意写出式子 ∏(i=1~n)∏(j=1~m)f[gcd(i,j)] 很明显的f可以预处理出来,解决 根据套路分析,我们可以先枚举gcd(i,j)==d ∏(d=1~n ...
- BZOJ.4816.[SDOI2017]数字表格(莫比乌斯反演)
题目链接 总感觉博客园的\(Markdown\)很..\(gouzhi\),可以看这的. 这个好像简单些啊,只要不犯sb错误 [Update] 真的算反演中比较裸的题了... \(Descriptio ...
- BZOJ 4816 [Sdoi2017]数字表格 ——莫比乌斯反演
大力反演出奇迹. 然后xjb维护. 毕竟T1 #include <map> #include <ctime> #include <cmath> #include & ...
- luogu3704 [SDOI2017]数字表格(莫比乌斯反演)
link 设\(f_0=0,f_1=1,f_n=f_{n-1}+f_{n-2}(n\ge 2)\) 求\(\prod_{i=1}^n\prod_{j=1}^mf_{\gcd(i,j)}\),多组询问, ...
- [BZOJ 2154]Crash的数字表格(莫比乌斯反演+数论分块)
[BZOJ 2154]Crash的数字表格(莫比乌斯反演+数论分块) 题面 求 \[\sum_{i=1}^{n} \sum_{j=1}^{m} \mathrm{lcm}(i,j)\] 分析 \[\su ...
- [SDOI2017]数字表格 --- 套路反演
[SDOI2017]数字表格 由于使用markdown的关系 我无法很好的掌控格式,见谅 对于这么简单的一道题竟然能在洛谷混到黑,我感到无语 \[\begin{align*} \prod\limits ...
- 【BZOJ4816】【SDOI2017】数字表格 [莫比乌斯反演]
数字表格 Time Limit: 50 Sec Memory Limit: 128 MB[Submit][Status][Discuss] Description Doris刚刚学习了fibonac ...
随机推荐
- fis3打包中的一些注意事项
1.在html文件中,如果在标签的style属性内添加路径,fis不会识别改路径并打包,如 2.fis主要针对静态文件进行打包.对其他文件打包会出现一些问题. 比如jsp页面.下面的例子script. ...
- 请不要嘲笑你身边那些投了P2P的朋友
在这方面我是非常谨慎的,但依然逃脱不了翻车的命运 这段时间曾经无数大V强烈推荐的懒投资出现大面积逾期,又把这个行业推上了风口浪尖,这里讲一讲我的故事 对于大多数人的理财投资可能是从2013年余额宝的推 ...
- 微服务、SpringCloud、k8s、Istio杂谈
一.微服务与SOA “微服务”是一个名词,没有这个名词之前也有“微服务”,一个朗朗上口的名词能让大家产生一个认知共识,这对推动一个事务的发展挺重要的,不然你叫微服务他叫小服务的大家很难集中到一个点上. ...
- LOJ6033「雅礼集训 2017 Day2」棋盘游戏 (博弈论,二分图,匈牙利算法)
什么神仙思路啊-- 看到棋盘就去想二分图.(smg啊)(其实是校内模拟赛有基本一样的题,只不过直接给了个二分图) 看到二分图就去想最大匹配.(我怎么想偶环的性质去了) (以下内容摘自这里) 这个二分图 ...
- [java 基础]反射入门
原文 概况 使用java的反射,可以让我们检查(或者修改)类,接口,字段,方法的特性.当你在编译期不知道他们的名字的时候非常有用. 除此之外,可以使用反射来创建实例,调用方法或者get/set 字段值 ...
- 源码学习之Spring (系统架构简单解析)
Spring Framework 系统架构总览图 Spring Framework的模块依赖关系图 Spring Framework各个模块功能说明 Spring核心模块 模块名称 主要功能 Spri ...
- spring的事件
理论 异步的实现方式可以使用事件,或者异步执行: spring中自带了事件的支持,核心是ApplicationEventPublisher; 事件包括三个要点: 事件的定义: 事件监听的定义: 发布事 ...
- 关于Maven+Tomcat7下cannot be cast to javax.servlet.Servlet问题的解决办法
今天在开发 JavaWeb 项目的时候,遇到了这么一个问题,这个错误是我在进行表单的异步提交的时候出现的.无法转化为 Servlet 经过我的一番检查之后!没有发现任何问题.... 注解配置无误 继承 ...
- sql server pivot
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[YearSalary]( [year] [int] NULL, ...
- python基础(29):网络编程(软件开发架构、网络基础、套接字初使用)
1. 软件开发架构 我们了解的程序之间通讯的应用可分为两种: 第一种是应用类:qq.微信.百度网盘.腾讯视频这一类是属于需要安装的桌面应用. 第二种是web类:比如百度.知乎.博客园等使用浏览器访问就 ...