题目链接
以下除法均指除后下取整
\[\prod_{i=1}^n \prod_{j=1}^mf(gcd(i,j))\\ =\prod_{x}f(x)^{\sum_i \sum_j [gcd(i,j)=x] } \\ =\prod_{x}f(x)^{ \sum_{x|d} \mu(\frac{d}{x})\frac{n}{d} \frac{m}{d} }\\ =\prod_{d}(\prod_{x|d} f(x)^{\mu(\frac{d}{x})} )^{\frac{n}{d}\frac{m}{d}}\]
然后把中间那个括号里的东西看成\(g(d)\)预处理,即可做到\(O(nlogn)\)预处理\(O(\sqrt n *logn)\)询问

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<vector>
#include<algorithm>
#include<cmath>
#define P puts("lala")
#define cp cerr<<"lala"<<endl
#define ln putchar('\n')
#define pb push_back
#define fi first
#define se second
#define mkp make_pair
using namespace std;
inline int read()
{char ch=getchar();int g=1,re=0;while(ch<'0'||ch>'9') {if(ch=='-')g=-1;ch=getchar();}while(ch<='9'&&ch>='0') re=(re<<1)+(re<<3)+(ch^48),ch=getchar();return re*g;
}
typedef long long ll;
typedef pair<int,int> pii;const int N=1000050;
const int inf=0x3f3f3f3f;
const int mod=1e9+7;
inline ll qpow(ll a,ll n)
{ll ans=1;for(;n;n>>=1,a=a*a%mod) if(n&1) ans=ans*a%mod;return ans;
}int f[N],finv[N],g[N],ginv[N],prime[N],cnt=0,mu[N];
bool isnotprime[N];void init()
{int n=N-50;f[1]=1; g[1]=1;for(int i=2;i<=n;++i) f[i]=(f[i-1]+f[i-2])%mod,g[i]=1;for(int i=1;i<=n;++i) finv[i]=qpow(f[i],mod-2);isnotprime[1]=1; mu[1]=1;for(int i=2;i<=n;++i){if(!isnotprime[i]) prime[++cnt]=i,mu[i]=-1;for(int j=1;j<=cnt&&i*prime[j]<=n;++j){isnotprime[i*prime[j]]=1;if(!(i%prime[j])) break;mu[i*prime[j]]=-mu[i];}}for(int i=1;i<=n;++i) for(int j=i;j<=n;j+=i){if(mu[j/i]>0) g[j]=1ll*g[j]*f[i]%mod;else if(!mu[j/i]) ;else g[j]=1ll*g[j]*finv[i]%mod;}g[0]=1; ginv[0]=1;for(int i=1;i<=n;++i) g[i]=1ll*g[i]*g[i-1]%mod;for(int i=1;i<=n;++i) ginv[i]=qpow(g[i],mod-2);
}int main()
{
#ifndef ONLINE_JUDGEfreopen("1.in","r",stdin);freopen("1.out","w",stdout);
#endifinit();int T=read();for(int cas=1;cas<=T;++cas){int n=read(),m=read();int M=min(n,m),ans=1;for(int i=1,j;i<=M;i=j+1){j=min(n/(n/i),m/(m/i));ans=1ll*ans*qpow(1ll*g[j]*ginv[i-1]%mod,1ll*(n/i)*(m/i))%mod;}printf("%d\n",ans);}return 0;
}

转载于:https://www.cnblogs.com/thkkk/p/8371566.html

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. [SDOI2017]数字表格

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

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

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

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

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

  8. BZOJ 4816 [Sdoi2017]数字表格

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

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

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

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

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

最新文章

  1. 误差、方差、偏差、噪声、训练误差+验证误差、偏差方差窘境、错误率和误差、过拟合与欠拟合
  2. java runnable main_Java 线程类问题写一个线程类MyThread,该线程实现了Runnable接口,写一个main方法, * 用for循...
  3. java怎么快速补缺_Java查漏补缺-小细节
  4. javax.el.ELException: Provider com.sun.el.ExpressionFactoryImpl not found
  5. 初识JavaScript,感觉整个人都不好了。。。
  6. html button跳转页面_HTML跳转到页面指定位置的几种方法
  7. Linux常用命令—文件处理命令—链接命令
  8. 优秀博客 --敏感词汇过滤
  9. 极速收藏!巨详细的分布式架构知识体系
  10. 严重: Catalina.stop: java.net.ConnectException: Connection refused: connect
  11. 42. 添加 Expires 头(3)
  12. ElementUI:使input自动聚焦的两种方法
  13. 孔浩javacript基础笔记一
  14. 仿真软件EWB,NI软件
  15. 从VGG19中任意层提取图像识别的特征
  16. ps入门第17天_模糊与锐化 案例:基础磨皮效果_ps修图_ps磨皮_ps高低频修图
  17. 每日学习笔记(21)
  18. 一个emoji表情包处理工具类
  19. 2022-2028年中国塑封机行业市场需求分析及投资前景展望报告
  20. 安卓巴士自测试题——第七期

热门文章

  1. 第二届(2017)中国IT武林大会暨2017年度中国IT年度人物颁奖盛典
  2. 「洛谷」P1196 银河英雄传说
  3. 机器学习教程之朴素贝叶斯、贝叶斯信念网络
  4. 找到一个最全的,抽空把它看完
  5. String对象intern方法
  6. 吞云吐雾,美国电子烟问题,内附FDA的一个隐情
  7. vscode背景绿色配置
  8. 模块化和组件化的理解
  9. c语言中大写a对应的数字,123456789a
  10. b85主板装服务器系统,[U盘装系统]技嘉B85主板U盘装系统图文教程