bzoj 4816 [Sdoi2017]数字表格——反演
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4816
\( ans=\prod\limits_{d=1}^{n}f[d]^{\sum\limits_{l=1}^{\frac{n}{d}}\left\lfloor\frac{n}{l*d}\right\rfloor*\left\lfloor\frac{m}{l*d}\right\rfloor} \)
\(=\prod\limits_{D=1}^{n}\prod\limits_{d|D}f[d]^{\mu(\frac{D}{d})*\left\lfloor\frac{n}{D}\right\rfloor*\left\lfloor\frac{m}{D}\right\rfloor} \)
令 \( g(D)=\prod\limits_{d|D}f(d)^{\mu(\frac{D}{d})} \) ,就能做了。预处理 g 不要 \( \sqrt{n} \) 枚举约数,而 n*ln(n) 枚举倍数。
预处理 g 的前缀积的逆元,回答询问的时候就少一个 log 。
注意指数上是模 (mod-1) !!!
#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const int N=1e6+,mod=1e9+;
int g[N],s[N],sn[N],u[N],pri[N];bool vis[N];
int pw(int x,int k)
{int ret=;while(k){if(k&)ret=(ll)ret*x%mod;x=(ll)x*x%mod;k>>=;}return ret;}
void init()
{
int f0=,f1=,lm=1e6,cnt=;
u[]=;
for(int i=;i<=lm;i++)
{
if(!vis[i])pri[++cnt]=i,u[i]=-;
for(int j=;j<=cnt&&(ll)i*pri[j]<=lm;j++)
{
vis[i*pri[j]]=;
if(i%pri[j]==){u[i*pri[j]]=;break;}
u[i*pri[j]]=-u[i];
}
}
for(int j=;j<=lm;j++)g[j]=;
s[]=;
for(int i=;i<=lm;i++)
{
swap(f0,f1);f1+=f0;if(f1>=mod)f1-=mod;
int inv=pw(f1,mod-);
for(int j=i,k=;j<=lm;j+=i,k++)
if(u[k]==)g[j]=(ll)g[j]*f1%mod;
else if(u[k]==-)g[j]=(ll)g[j]*inv%mod;
s[i]=(ll)s[i-]*g[i]%mod;
}
sn[lm]=pw(s[lm],mod-);
for(int i=lm-;i;i--)sn[i]=(ll)sn[i+]*g[i+]%mod;
sn[]=;//
}
int main()
{
int T,n,m;scanf("%d",&T);init();
while(T--)
{
scanf("%d%d",&n,&m);if(n>m)swap(n,m);
int ans=;
for(int i=,j;i<=n;i=j+)
{
int d0=n/i,d1=m/i; j=min(n/d0,m/d1);
ans=(ll)ans*pw((ll)s[j]*sn[i-]%mod,(ll)d0*d1%(mod-))%mod;/////%(mod-1)!!!!!
}
printf("%d\n",ans);
}
return ;
}
bzoj 4816 [Sdoi2017]数字表格——反演的更多相关文章
- BZOJ:4816: [Sdoi2017]数字表格
4816: [Sdoi2017]数字表格 Time Limit: 50 Sec Memory Limit: 128 MBSubmit: 501 Solved: 222[Submit][Status ...
- BZOJ.4816.[SDOI2017]数字表格(莫比乌斯反演)
题目链接 总感觉博客园的\(Markdown\)很..\(gouzhi\),可以看这的. 这个好像简单些啊,只要不犯sb错误 [Update] 真的算反演中比较裸的题了... \(Descriptio ...
- BZOJ 4816 [Sdoi2017]数字表格 ——莫比乌斯反演
大力反演出奇迹. 然后xjb维护. 毕竟T1 #include <map> #include <ctime> #include <cmath> #include & ...
- bzoj 4816: [Sdoi2017]数字表格【莫比乌斯反演+逆元】
把题意简化,就是要求 \[ \prod_{d=1}^{min(n,m)}f[d]^{\sum_{i=1}^{n}\sum_{j=1}^{m}e[gcd(i,j)==d]} \] 把幂用莫比乌斯反演转化 ...
- BZOJ 4816[SDOI2017]数字表格(莫比乌斯反演)
题目链接 \(Description\) 用\(f_i\)表示\(fibonacci\)数列第\(i\)项,求\(\prod_{i=1}^{n}\prod_{j=1}^{m}f[gcd(i,j)]\) ...
- 【刷题】BZOJ 4816 [Sdoi2017]数字表格
Description Doris刚刚学习了fibonacci数列.用f[i]表示数列的第i项,那么 f[0]=0 f[1]=1 f[n]=f[n-1]+f[n-2],n>=2 Doris用老师 ...
- 【BZOJ 4816】 4816: [Sdoi2017]数字表格 (莫比乌斯)
4816: [Sdoi2017]数字表格 Time Limit: 50 Sec Memory Limit: 128 MBSubmit: 666 Solved: 312 Description Do ...
- [Sdoi2017]数字表格 [莫比乌斯反演]
[Sdoi2017]数字表格 题意:求 \[ \prod_{i=1}^n \prod_{j=1}^m f[(i,j)] \] 考场60分 其实多推一步就推倒了... 因为是乘,我们可以放到幂上 \[ ...
- [SDOI2017]数字表格 --- 套路反演
[SDOI2017]数字表格 由于使用markdown的关系 我无法很好的掌控格式,见谅 对于这么简单的一道题竟然能在洛谷混到黑,我感到无语 \[\begin{align*} \prod\limits ...
随机推荐
- 解决spring boot在RabbitMQ堆积消息情况下无法启动问题
最近遇到一个问题,服务站点上线之前,先去新建需要的rabbitmq并绑定关系,此时 如果发送消息方运行, 那边会造成新建的q消息部分堆积得不到及时消费 那么问题来了? 在消息堆积情况下,服务站点无法启 ...
- Java截取图片的一部分并保存为40*40的图片
@Test public void testImag() { try { String path = "E:/flower2.jpg"; int x = 11, y = 20, c ...
- 初识async函数
为什么会出现async函数 首先从大的方面来说,出现async函数时为了解决JS编程中的异步操作,再往具体说就是为了对以往异步编程方法的一种改进,也有人说仅仅只是Generator 函数的语法糖,这个 ...
- laravel中设置表单的方式,以及获取表单的提交的数据
- URAL 1557 Network Attack 图论,连通性,tarjain,dfs建树,分类讨论 难度:2
http://acm.timus.ru/problem.aspx?space=1&num=1557 1557. Network Attack Time limit: 2.0 secondMem ...
- 【2018多校第一场】hdu6308-Time Zone(日期)
Problem Description Chiaki often participates in international competitive programming contests. The ...
- 数据存储-- Core Data的使用(一)
一.概念 1.Core Data 是数据持久化存储的最佳方式 2.数据最终的存储类型可以是:SQLite数据库,XML,二进制,内存里,或自定义数据类型 在Mac OS X 10.5Leopard及以 ...
- L154
Several possessions of the late physicist's Stephen Hawking will be included in an upcoming auction ...
- Linux:运行级别,root密码重置,救援模式,安装图形化界面
运行级别,root密码重置,救援模式,安装图形界面 运行级别 1.查看当前系统的运行级别 runlevel 2.认识各个运行级别以及开机自启运行级别 Linux系统运行级别共7个执行 vi /etc/ ...
- ionic安装插件常用命令
常见插件查找网站: http://ngcordova.com/docs/plugins http://cordova.apache.org/plugins/ $ ionic plugin list / ...