题目:

我是超链接

题解:

不愧是一去不返的SDOI,就是套路
我们要求的是

∏i=1n∏j=1mf((i,j))=∏i=1n∏j=1m∑d=1n[(i,j)=d]f(d)∏i=1n∏j=1mf((i,j))=∏i=1n∏j=1m∑d=1n[(i,j)=d]f(d)

\prod _{i=1}^n\prod _{j=1}^mf( (i,j) )=\prod _{i=1}^n\prod _{j=1}^m\sum_{d=1}^n[(i,j)=d]f(d)
后面之所以是连加因为只会有一个d满足条件,要是累乘会变成0,接着画

∏d=1nf(d)∑ndi=1∑ndj=1[(i,j)=1]∏d=1nf(d)∑i=1nd∑j=1nd[(i,j)=1]

\prod_{d=1}^nf(d)^{\sum_{i=1}^{\frac{n}{d}}\sum_{j=1}^{\frac{n}{d}}[(i,j)=1]}
诶为什么是角标的累加呢?因为对于这个约数d,f(d)出现了累加次数
这样一看角标就很套路了,我们直接画到最简形式

∏d=1nf(d)∑ndt=1ndtmdtμ(t)∏d=1nf(d)∑t=1ndndtmdtμ(t)

\prod_{d=1}^nf(d)^{\sum_{t=1}^{\frac{n}{d}}\frac{n}{dt}\frac{m}{dt}μ(t)}
我们看到了dt,这东西可不好枚举,这也是套路啊,设T=dt并且枚举T

∏T=1n∏d|Tf(d)μ(Td)nTmT∏T=1n∏d|Tf(d)μ(Td)nTmT

\prod_{T=1}^n\prod_{d|T}f(d)^{μ(\frac{T}{d})\frac{n}{T}\frac{m}{T}}
这个 nTmTnTmT\frac{n}{T}\frac{m}{T}显然可以分块优化,那么我们现在就是要求 ∏d|Tf(d)μ(Td)∏d|Tf(d)μ(Td)\prod_{d|T}f(d)^{μ(\frac{T}{d})}的前缀积,然后可以把除法转化为逆元进行计算,这东西也可以在筛子里求出来 O(n−−√)O(n)O(\sqrt n)
然后就结束咯~

代码:

#include <cstdio>
#include <iostream>
#define LL long long
using namespace std;
const int mod=1e9+7;
const int maxn=1e6;
const int N=1000005;
int mu[N],pri[N],tot;LL g[N],inv[N],f[N];bool ss[N];
LL ksm(LL a,LL k)
{LL ans=1;for (;k;k>>=1,a=a*a%mod)if (k&1) ans=ans*a%mod;return ans;
}
void init()
{g[0]=f[1]=g[1]=mu[1]=inv[1]=1;for (int i=2;i<=maxn;i++){f[i]=(f[i-1]+f[i-2])%mod;inv[i]=ksm(f[i],mod-2);g[i]=1;if (!ss[i]) pri[++tot]=i,mu[i]=-1;for (int j=1;j<=tot && pri[j]*i<=maxn;j++){ss[pri[j]*i]=1;if (i%pri[j]==0) break;mu[pri[j]*i]=-mu[i];    }}for (int i=1;i<=maxn;i++)//d{for (int j=i;j<=maxn;j+=i)//Tif (mu[j/i]==-1) g[j]=g[j]*inv[i]%mod;else if (mu[j/i]==1) g[j]=g[j]*f[i]%mod;}for (int i=2;i<=maxn;i++) g[i]=g[i-1]*g[i]%mod;
}
int main()
{init();int T,n,m;scanf("%d",&T);while (T--){scanf("%d%d",&n,&m);if (n>m) swap(n,m);LL ans=1;for (int i=1,last;i<=n;i=last+1){last=min(n/(n/i),m/(m/i));ans=ans*ksm(g[last]*ksm(g[i-1],mod-2)%mod,(LL)(n/i)*(LL)(m/i)%(mod-1))%mod;}printf("%lld\n",ans);}
}

[BZOJ4816][SDOI2017]数字表格(反演)相关推荐

  1. [bzoj4816][Sdoi2017]数字表格 (反演+逆元)

    (真不想做莫比乌斯了) 首先根据题意写出式子 ∏(i=1~n)∏(j=1~m)f[gcd(i,j)] 很明显的f可以预处理出来,解决 根据套路分析,我们可以先枚举gcd(i,j)==d ∏(d=1~n ...

  2. SDOI2017 数字表格

    SDOI2017 数字表格 题意: 题目传送门 题解: 答案的式子大致是这样的: \[\prod_{i = 1} ^ n \prod_{j = 1} ^ m f_{gcd(i, j)}\] 然后大力反 ...

  3. 【bzoj4816】[Sdoi2017]数字表格

    题目链接 Description Doris刚刚学习了fibonacci数列.用f[i]表示数列的第i项,那么 f[0]=0 f[1]=1 f[n]=f[n-1]+f[n-2],n>=2 Dor ...

  4. 并不对劲的bzoj4816:loj2000:p3704[SDOI2017]数字表格

    题目大意 有函数\(f(x)\),\(f(0)=0,f(1)=1,f(x)=f(x-1)+f(x-2)\) \(t\)(\(t\leq1000\))组询问,每次给定\(n,m\)(\(n,m\leq1 ...

  5. 【BZOJ4816】数字表格,反演+枚举约数

    传送门 思路: 考场上没怎么卡常,只有60分,感觉自己宛如一个zz 先说一下60分做法 设n≤mn\leq m 随便化出来∏d=1nf(d)S(⌊nd⌋,⌊md⌋)\displaystyle\prod ...

  6. BZOJ 4816[SDOI2017]数字表格(莫比乌斯反演)

    题目链接 \(Description\) 用\(f_i\)表示\(fibonacci\)数列第\(i\)项,求\(\prod_{i=1}^{n}\prod_{j=1}^{m}f[gcd(i,j)]\) ...

  7. 「luogu3704」[SDOI2017]数字表格

    莫比乌斯反演,其中一些处理比较套路 1 #include<bits/stdc++.h> 2 #define ll long long 3 using namespace std; 4 co ...

  8. [SDOI2017]数字表格

    题目描述 Doris刚刚学习了fibonacci数列.用$f[i]$ 表示数列的第$i$ 项,那么 $f[0]=0$ ,$f[1]=1$ , $f[n]=f[n-1]+f[n-2],n\geq 2$ ...

  9. BZOJ 4816 [Sdoi2017]数字表格

    题目链接 https://lydsy.com/JudgeOnline/problem.php?id=4816 题解 反演 ∏T=1min⁡(n,m)(∏d∣Tfib(d)μ(d))⌊n/d⌋⌊m/d⌋ ...

  10. BZOJ 2154 [国家集训队]Crash的数字表格 / JZPTAB(莫比乌斯反演,经典好题)(Luogu P1829)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 P1829 [国家集训队]Crash的数字表格 / JZPTAB(反演,经典好题) Problem S ...

最新文章

  1. Protocol Buffer C++应用实例
  2. 【Linux】数据库管理
  3. SAP ECC6安装系列二:安装前的准备工作
  4. 启用sharepoin2013中的ChartWebPart
  5. atime、mtime、ctime
  6. python查找文字在图片中的位置_python实现简单图片文字识别翻译OCR
  7. 你不能访问此共享文件夹,因为你组织的安全策略的解决办法
  8. uniapp 实现高德地图导航
  9. Unix编程艺术:哲学基础
  10. 【网启树莓派】无SD卡 从网络驱动树莓派| raspberry boot via pxe
  11. linux 如何加定时任务,linux系统添加定时任务
  12. codewars练习(javascript)-2021/3/14
  13. Unity实现AR扫描图片
  14. 安装php vcruntime140,win7安装apache或者php 5.7缺少vcruntime140.dll的问题
  15. 给文字上加中划线_Word中为字符添加上划线该怎么做
  16. 周易六十四卦——雷火丰卦
  17. 简介一些黑盒测试的方法
  18. idea java 阿里巴巴_AS 阿里巴巴Java开发规约 CheckStyle-IDEA
  19. 手把手教你申请邓白氏编码
  20. wps表单小程序 服务器错误,微信小程序WPS表单怎么在钉钉使用

热门文章

  1. three tables described the hot movie information in recent years
  2. WindowsXP的图标结构
  3. 图像算法(一):最近邻插值,双线性插值,三次插值
  4. 计算机数字媒体专业职业规划书,如何写数字媒体技术的职业生涯规划书?
  5. python计算个税
  6. Android 百度语音合成手把手教学
  7. 枕头里面加进这些小宝贝能治高血压!快告知你父母~
  8. MySql 递归应用
  9. 大脚插件服务器金币显示,关于魔兽世界的大脚插件无法显示金钱的问题
  10. PAT A1154 Vertex Coloring ——多少楼台烟雨中