题目链接

  给你们讲个笑话:Konoset是个sb,他快速幂的时候把幂次取模了。

  原式差不多就是这样吧$\prod\limits_{i=1}^{n}\prod\limits_{j=1}^{m}f[gcd(i,j)]$

  然后我们枚举gcd(i,j)

  可以变换一下

  $\prod\limits_{w=1}^{min(n,m)}f[w]^{\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}[gcd(i,j)==w]}$

  然后上面那个玩意搞搞可以反演一下

  变为$\prod\limits_{w=1}^{min(n,m)}f[w]^{\sum\limits_{w|d}\mu(\frac{d}{w})\frac{n}{d}\frac{m}{d}}$

  上面那个玩意显然=$\sum\limits_{d}\mu(d)\frac{n}{dw}\frac{m}{dw}$

  然后枚举T=dw

  指数变为$\sum\limits_{\frac{T}{w}}\mu(\frac{T}{w})\frac{n}{T}\frac{m}{T}$

  然后把上面那个cigma搬到下面来

  变成累乘

  然后改成枚举T,中间预处理前缀积后面n除以Tm除以T的部分数论分块

  这题是真的恶心

  

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<cctype>
#define maxn 1000020
#define mod 1000000007
using namespace std;
inline long long read(){
long long num=,f=;
char ch=getchar();
while(!isdigit(ch)){
if(ch=='-') f=-;
ch=getchar();
}
while(isdigit(ch)){
num=num*+ch-'';
ch=getchar();
}
return num*f;
} long long fib[maxn];
long long sum[maxn];
long long mul[maxn];
long long ni[maxn];
int miu[maxn];
bool vis[maxn];
int prime[maxn],num; long long pow(long long n,long long x){
long long ans=;
while(x){
if(x&) ans=(ans*n)%mod;
n=(n*n)%mod;
x>>=;
}
return ans;
} int main(){
fib[]=;fib[]=vis[]=vis[]=miu[]=;
for(int i=;i<maxn;++i){
if(vis[i]==){
prime[++num]=i;
miu[i]=-;
}
for(int j=;j<=num&&i*prime[j]<maxn;++j){
vis[i*prime[j]]=;
if(i%prime[j]==) break;
miu[i*prime[j]]=-miu[i];
}
}
for(int i=;i<maxn;++i){
fib[i]=(fib[i-]+fib[i-])%mod;
sum[i]=;
}
sum[]=;
for(int i=;i<maxn;++i){
long long now=fib[i],ret=pow(now,mod-);
for(register int j=i;j<maxn;j+=i){
if(miu[j/i]==) sum[j]=(sum[j]*now)%mod;
else sum[j]=(sum[j]*ret)%mod;
}
}
mul[]=sum[];mul[]=;ni[]=ni[]=;
for(int i=;i<maxn;++i){
mul[i]=(sum[i]*mul[i-])%mod;
ni[i]=pow(mul[i],mod-);
}
int T=read();
while(T--){
long long n=read(),m=read();
int l=;long long ans=;int top=min(n,m);
while(l<=top){
int r=min(n/(n/l),m/(m/l));
ans*=pow(mul[r]*ni[l-]%mod,(n/l)*(m/l));
ans%=mod;
l=r+;
}
printf("%lld\n",ans);
}
return ;
}

  

【Luogu】P3704数字表格(莫比乌斯反演+大胆暴力)的更多相关文章

  1. [BZOJ 2154]Crash的数字表格(莫比乌斯反演+数论分块)

    [BZOJ 2154]Crash的数字表格(莫比乌斯反演+数论分块) 题面 求 \[\sum_{i=1}^{n} \sum_{j=1}^{m} \mathrm{lcm}(i,j)\] 分析 \[\su ...

  2. BZOJ 2154: Crash的数字表格 [莫比乌斯反演]

    2154: Crash的数字表格 Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 2924  Solved: 1091[Submit][Status][ ...

  3. 【bzoj2154】Crash的数字表格 莫比乌斯反演

    题目描述 今天的数学课上,Crash小朋友学习了最小公倍数(Least Common Multiple).对于两个正整数a和b,LCM(a, b)表示能同时被a和b整除的最小正整数.例如,LCM(6, ...

  4. 【BZOJ4816】【SDOI2017】数字表格 [莫比乌斯反演]

    数字表格 Time Limit: 50 Sec  Memory Limit: 128 MB[Submit][Status][Discuss] Description Doris刚刚学习了fibonac ...

  5. 【bzoj4816】[Sdoi2017]数字表格 莫比乌斯反演

    题目描述 Doris刚刚学习了fibonacci数列.用f[i]表示数列的第i项,那么 f[0]=0 f[1]=1 f[n]=f[n-1]+f[n-2],n>=2 Doris用老师的超级计算机生 ...

  6. [Sdoi2017]数字表格 [莫比乌斯反演]

    [Sdoi2017]数字表格 题意:求 \[ \prod_{i=1}^n \prod_{j=1}^m f[(i,j)] \] 考场60分 其实多推一步就推倒了... 因为是乘,我们可以放到幂上 \[ ...

  7. BZOJ4816 SDOI2017 数字表格 莫比乌斯反演

    传送门 做莫比乌斯反演题显著提高了我的\(\LaTeX\)水平 推式子(默认\(N \leq M\),分数下取整,会省略大部分过程) \(\begin{align*} \prod\limits_{i= ...

  8. 【BZOJ】2154: Crash的数字表格 莫比乌斯反演

    [题意]给定n,m,求Σlcm(i,j),1<=i<=n,1<=j<=m,n,m<=10^7. [算法]数论(莫比乌斯反演) [题解] $$ans=\sum_{i\leq ...

  9. [bzoj 2693] jzptab & [bzoj 2154] Crash的数字表格 (莫比乌斯反演)

    题目描述 TTT组数据,给出NNN,MMM,求∑x=1N∑y=1Mlim(x,y)\sum_{x=1}^N\sum_{y=1}^M lim(x,y)\newlinex=1∑N​y=1∑M​lim(x, ...

随机推荐

  1. python3.6 配置COCO API出错解决方案

    使用Anaconda Prompt进行安装 问题出现的背景:在尝试使用mask-rcnn时,遇到了这个问题,最终解决掉了

  2. HDU 5091 Beam Cannon (扫描线思想)

    题意:移动一个矩形,使矩形内包含的点尽量多. 思路:把一个点拆成两个事件,一个进(权值为1)一个出(权值为-1),将所有点按照x排序,然后扫描,对于每个x,用一个滑窗计算一下最大值,再移动扫描线.树状 ...

  3. Android(java)学习笔记113:Activity的生命周期

    1.首先来一张生命周期的总图: onCreate():创建Acitivity界面       onStart():让上面创建的界面可见              onResume():让上面创建的界面 ...

  4. 【转】iOS学习笔记(十五)——数据库操作(SQLite)

    SQLite (http://www.sqlite.org/docs.html) 是一个轻量级的关系数据库.SQLite最初的设计目标是用于嵌入式系统,它占用资源非常少,在嵌入式设备中,只需要几百K的 ...

  5. stixel world论文总结

    1.The Stixel World - A Compact Medium Level Representation of the 3D-World:http://pdfs.semanticschol ...

  6. 抓取oracle建表语句及获取建表ddl语句

    抓取oracle建表语句及获取建表ddl语句 1.抓取代码如下: 1.1.产生表的语法资料 DECLARE-- v_notPartTable VARCHAR2(1000):= '&2'; -- ...

  7. Linux运维笔记--第三部

    第三部 3. Linux系统文件重要知识初步讲解 # ls  -lhi   (i: inode,每个文件前的数字代表文件身份ID:h: human 人类可读) 显示:25091 -rw-r--r-- ...

  8. 科技庄园(背包dp)---对于蒟蒻来说死了一大片的奇题

    题目描述: Life种了一块田,里面种了一些桃树. Life对PFT说:“我给你一定的时间去摘桃,你必须在规定的时间之内回到我面前,否则你摘的桃都要归我吃!” PFT思考了一会,最终答应了! 由于PF ...

  9. Spring Security 与 OAuth2(介绍)

    https://www.jianshu.com/p/68f22f9a00ee Spring Security 与 OAuth2(介绍) 林塬 2018.01.23 11:14* 字数 3097 阅读 ...

  10. Golang 简单 http 代理转发

    程序基本实现了对http的完整转发,目前暂不支持https windows需要在设置中的网络>代理设置为手动,并开启代理服务器,填写ip和端口 // httpForward package ma ...