博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ 4816
阅读量:5244 次
发布时间:2019-06-14

本文共 1259 字,大约阅读时间需要 4 分钟。

思路:

$\Pi_{i=1}^n\Pi_{j=1}^m f[gcd(i,j)]$

$=\Pi_{d=1}^n\Pi_{i=1}^{\lfloor\frac{n}{d}\rfloor}\Pi_{j=1}^{\lfloor\frac{m}{d}\rfloor}f[d]*(gcd(i,j)==1)$

$\Sigma_{k=1}^n\Pi_{d|k}\Pi_{i=1}^{\lfloor\frac{n}{dk}\rfloor}\Pi_{j=1}^{\lfloor\frac{m}{dk}\rfloor}*f[d]*\mu(k)$

设dk=t

$=\Sigma_{t=1}^n\Pi_{i=1}^{\lfloor\frac{n}{t}\rfloor}\Pi_{j=1}^{\lfloor\frac{m}{t}\rfloor}\Pi_{d|t}f[d]*\mu(\frac{t}{d})$

$=\Sigma_{t=1}^n\Pi_{d|t}f[d]^{\mu(\frac{t}{d})*\lfloor\frac{n}{t}\rfloor*\lfloor\frac{m}{t}\rfloor}$

设$g(t)=\Pi_{d|t}f[d]^{\mu(\frac{t}{d})}$

$g(t)可以O(nlogn)预处理$

搞个前缀积

剩下的 喜闻乐见 分块

//By SiriusRen#include 
#include
#include
using namespace std;const int N=1000005,mod=1000000007;int n,m,cases,f[N],vis[N],prime[N],g[N],mu[N],tot;typedef long long ll;int pow(ll x,int y){ ll res=1; while(y){ if(y&1)res=res*x%mod; x=x*x%mod,y>>=1; }return res;}void shai(){ mu[1]=f[1]=g[0]=1; for(int i=2;i
m)swap(n,m); ll ans=1; for(int l=1,r;l<=n;l=r+1){ r=min(n/(n/l),m/(m/l)); ans=ans*pow(1ll*g[r]*pow(g[l-1],mod-2)%mod,1ll*(n/l)*(m/l)%(mod-1))%mod; }printf("%lld\n",ans); }}

 

转载于:https://www.cnblogs.com/SiriusRen/p/6703062.html

你可能感兴趣的文章
Leetcode 92. Reverse Linked List II
查看>>
TensorFlow2-维度变换
查看>>
Redux源码分析之createStore
查看>>
POJ 2060 最小路径覆盖
查看>>
label标签作用
查看>>
Selenium2之Web自动化编写配置(Java)
查看>>
windown快速安装xgboost
查看>>
tarjan(缩点)
查看>>
Lombok插件
查看>>
Linux上安装Libssh2
查看>>
自定义EL函数
查看>>
stm32的电源
查看>>
splice的多种用法
查看>>
20162304 2017-2018-1 《程序设计与数据结构》第二周学习总结
查看>>
九.python面向对象(双下方法内置方法)
查看>>
2018-09-12
查看>>
go:channel(未完)
查看>>
[JS]递归对象或数组
查看>>
CSS与Theme的作用——Asp.Net
查看>>
LeetCode(17) - Letter Combinations of a Phone Number
查看>>