题目链接

https://lydsy.com/JudgeOnline/problem.php?id=4816

题解

反演
∏T=1min⁡(n,m)(∏d∣Tfib(d)μ(d))⌊n/d⌋⌊m/d⌋ \prod_{T=1}^{\min(n,m)}(\prod_{d|T}fib(d)^{\mu(d)})^{\lfloor n/d\rfloor\lfloor m/d\rfloor} T=1∏min(n,m)​(d∣T∏​fib(d)μ(d))⌊n/d⌋⌊m/d⌋
预处理出中间部分,整除分块即可。

注意不要暴力算fib(d)fib(d)fib(d)的逆元,可以预处理出逆元。

代码

#include <cstdio>
#include <algorithm>int read()
{int x=0,f=1;char ch=getchar();while((ch<'0')||(ch>'9')){if(ch=='-'){f=-f;}ch=getchar();}while((ch>='0')&&(ch<='9')){x=x*10+ch-'0';ch=getchar();}return x*f;
}const int maxn=1000000;
const int mod=1000000007;
const int pmod=mod-1;int quickpow(int a,int b)
{int res=1;while(b){if(b&1){res=1ll*res*a%mod;}a=1ll*a*a%mod;b>>=1;}return res;
}int p[maxn+10],prime[maxn+10],cnt,mu[maxn+10],f[maxn+10],fib[maxn+10],ifib[maxn+10];int getprime()
{p[1]=mu[1]=1;for(int i=2; i<=maxn; ++i){if(!p[i]){prime[++cnt]=i;mu[i]=-1;}for(int j=1; (j<=cnt)&&(i*prime[j]<=maxn); ++j){int x=i*prime[j];p[x]=1;if(i%prime[j]==0){mu[x]=0;break;}mu[x]=-mu[i];}}fib[0]=ifib[0]=0;fib[1]=ifib[1]=1;for(int i=2; i<=maxn; ++i){fib[i]=fib[i-1]+fib[i-2];if(fib[i]>=mod){fib[i]-=mod;}ifib[i]=quickpow(fib[i],mod-2);}for(int i=0; i<=maxn; ++i){f[i]=1;}for(int d=1; d<=maxn; ++d){for(int T=d; T<=maxn; T+=d){if(mu[T/d]==1){f[T]=1ll*f[T]*fib[d]%mod;}else if(mu[T/d]==-1){f[T]=1ll*f[T]*ifib[d]%mod;}}}for(int i=1; i<=maxn; ++i){f[i]=1ll*f[i]*f[i-1]%mod;}return 0;
}int T,n,m;int main()
{getprime();T=read();while(T--){n=read();m=read();int res=1;for(int l=1,r; l<=std::min(n,m); l=r+1){r=std::min(n/(n/l),m/(m/l));res=1ll*res*quickpow(1ll*f[r]*quickpow(f[l-1],mod-2)%mod,1ll*(n/l)*(m/l)%pmod)%mod;}printf("%d\n",res);}return 0;
}

转载于:https://www.cnblogs.com/Canopus-wym/p/10376065.html

BZOJ 4816 [Sdoi2017]数字表格相关推荐

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

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

  2. SDOI2017 数字表格

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

  3. [SDOI2017]数字表格

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

  4. 【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 ...

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

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

  6. 并不对劲的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 ...

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

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

  8. 【BZOJ】【2154】Crash的数字表格

    莫比乌斯反演 PoPoQQQ讲义第4题 题解:http://www.cnblogs.com/jianglangcaijin/archive/2013/11/27/3446169.html 感觉两次sq ...

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

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

最新文章

  1. kali 树莓派 android,【原】树莓派安装KALI LINUX的手记
  2. JSP FORM 提交
  3. JavaScript定时器原理及高级使用
  4. 1.13 空字符串和null的区别
  5. mysql 备份大表 存储过程_mysql批量备份表的存储过程写法
  6. mongodb java driver 聚合框架
  7. MySQL Range Optimization
  8. [学习指南]运动是基于4412嵌入式技术开发板学习步骤
  9. 20200707:动态规划专题之不同路径
  10. js检测是否安装java_js判断当前浏览器是否是源生app的webview
  11. Binder运行机制的流程图
  12. 2021-08-25Prompt
  13. 品味奢华 匠心独韵——飞利浦Fidelio T1设计与声音的哲学
  14. no package identifier when getting value for resource number 0x00000005
  15. 《计算机网络》第七版第一章总结及部分课后习题答案
  16. 【渝粤教育】国家开放大学2018年春季 8644-21T汽车电子商务 参考试题
  17. cx_Oracle.DatabaseError: DPI-1047: Cannot locate a 64-bit O
  18. UDP和TCP(Java版)
  19. 微信小程序地址导航功能实现详解
  20. 激活office时,登录或者创建账户出现白屏、一直加载等现象?

热门文章

  1. ncl 多个单一时间文件合并成一个nc文件_iOS逆向--MachoO文件
  2. java 好用的 schedule_Java用Timer schedule搞定定时职务
  3. sqlserver中某列转成以逗号连接的字符串及逆转、数据行转列列转行
  4. 对if...else if...的理解
  5. 快速崛起的物联网世界安全问题
  6. LINUX/UNIX vi全屏幕编辑器
  7. 测试你的样子长得美与丑「超准的测试」
  8. C#中Redis封装的类
  9. TensorFlow官方发布剪枝优化工具:参数减少80%,精度几乎不变
  10. 滴滴这车值不值得上?前Google全球技术总监郄小虎说来来来