题目大意

给定n,m,求 Πni=1Πmj=1fib[gcd(i,j)] \Pi_{i=1}^{n}\Pi_{j=1}^{m}fib[gcd(i,j)]
10% 1≤n,m≤100 1 ≤ n, m ≤ 100
30% 1≤n,m≤1000 1 ≤ n, m ≤ 1000
30% T≤3 T ≤ 3
100% T≤1000,1≤n,m≤106 T ≤ 1000,1 ≤ n, m ≤ 10^6

题目解析

一看见题,我就信心满满的打了发莫比乌斯反演正解,然后0分滚粗,还没有暴力容斥60分高。。。后来发现是对某些幂指数取了模的原因。

好的,开始正解:
Πni=1Πmj=1fib[gcd(i,j)] \Pi_{i=1}^{n}\Pi_{j=1}^{m}fib[gcd(i,j)]
我们们不妨令 f(x)=Πd|xg(d) f(x)=\Pi_{d|x}g(d)
则有 g(x)=f(x)Πd|x,d≠xg(d) g(x)=\frac{f(x)}{\Pi_{d|x,d\not=x}g(d)}
于是我们可以递推求出 f(x) f(x)和 g(x) g(x)。。。
然后再看原来的方程
Πni=1Πmj=1fib[gcd(i,j)] \Pi_{i=1}^{n}\Pi_{j=1}^{m}fib[gcd(i,j)]
=Πni=1Πmj=1Πd|i,d|jg(d) =\Pi_{i=1}^{n}\Pi_{j=1}^{m}\Pi_{d|i,d|j}g(d)
=Πmin(n,m)d=1g(d)⌊nd⌋×⌊md⌋ =\Pi_{d=1}^{min(n,m)}g(d)^{\lfloor\frac{n}{d}\rfloor\times\lfloor\frac{m}{d}\rfloor}
又因为 ⌊nd⌋×⌊md⌋ \lfloor\frac{n}{d}\rfloor\times\lfloor\frac{m}{d}\rfloor仅有 n−√+m−−√ \sqrt{n}+\sqrt{m}个取值,搞搞就行了。

代码

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<cstdlib>
#include<queue>
#include<stack>
using namespace std;#define MAXN 1000000
#define MAXM
#define INF 0x3f3f3f3f
typedef long long int LL;template<class T>
void Read(T &x){x=0;char c=getchar();bool flag=0;while(c<'0'||'9'<c){if(c=='-')flag=1;c=getchar();}while('0'<=c&&c<='9'){x=x*10+c-'0';c=getchar();}if(flag)x=-x;
}const int MOD = 1000000007;
int n,m;
int fib[MAXN+10],g[MAXN+10];
int sum[MAXN+10],inv[MAXN+10];int ksm(int a,int p,int mod){int ret=1;while(p){if(p&1)ret=1ll*ret*a%mod;a=1ll*a*a%mod;p>>=1;}return ret;
}void init(){g[1]=g[2]=fib[1]=fib[2]=1;for(int i=3;i<=MAXN;++i)g[i]=fib[i]=(fib[i-2]+fib[i-1])%MOD;for(int i=1;i<=MAXN;++i){int inv=ksm(g[i],MOD-2,MOD);for(int j=i*2;j<=MAXN;j+=i)g[j]=1ll*g[j]*inv%MOD;}inv[0]=sum[0]=1;for(int i=1;i<=MAXN;++i)sum[i]=1ll*sum[i-1]*g[i]%MOD,inv[i]=ksm(sum[i],MOD-2,MOD);
}int main(){//freopen("product.in","r",stdin);//freopen("product.out","w",stdout);init();int T;Read(T);while(T--){Read(n),Read(m);if(n>m)swap(n,m);int ans=1,last=0;for(int i=1;i<=n;i=last+1){last=min(n/(n/i),m/(m/i));ans=1ll*ans*ksm(1ll*sum[last]*inv[i-1]%MOD,1ll*(n/i)*(m/i)%(MOD-1),MOD)%MOD;}printf("%d\n",ans);}
}

【SDOI2017】数字表格相关推荐

  1. SDOI2017 数字表格

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

  2. [SDOI2017]数字表格

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

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

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

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

  6. BZOJ 4816 [Sdoi2017]数字表格

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

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

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

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

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

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

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

  10. bzoj2154 Crash的数字表格

    2154: Crash的数字表格 Time Limit: 20 Sec  Memory Limit: 259 MB Submit: 4549  Solved: 1643 [Submit][Status ...

最新文章

  1. 在数据采集器中用TensorFlow进行实时机器学习
  2. [ASP.NET Core] Middleware
  3. 欢乐纪中A组赛【2019.8.23】
  4. MYSQL-创建事件
  5. VMware快照功能与(非永久)永久磁盘详解
  6. 简书bug(已修复):网络不佳时安卓1.11.3呈现的空白页面如图
  7. Linux指定jre运行jar包,Linux如何运行和停止jar包
  8. 【C++】std::是什么?
  9. 光盘显示0字节可用_AT89C2051单片机开发点钞机外接显示屏
  10. 项目管理计划包含哪些内容
  11. Word怎么删除背景颜色
  12. python定义一个矩形类_矩形类Python
  13. 困扰了很久的ubuntu下智能拼音输入法
  14. WHOIS查询检索,域名信息查询工具软件
  15. 计算机视觉c刊论文,摄影外文文献 摄影核心期刊参考文献哪里找
  16. 浅谈Marlin2.0
  17. 基于IMS的VoLTE业务
  18. 第77届奥斯卡金像奖完全获奖名单 [附完全提名名单]
  19. java基于ssm广州市家教中介服务网站-计算机毕业设计
  20. JAVA物业管理系统源码

热门文章

  1. 为什么我要在2018年学习Python?
  2. 在域控制器上(AD)搭建组织架构
  3. 用户调研方法之焦点小组
  4. 叶绿体基因组四个区连接位点可视化(IRscope+另一个画图脚本)
  5. 工作流+口才思维导图模板
  6. 鸿蒙钉钉app,钉钉鸿蒙版app下载_钉钉鸿蒙版app最新版下载 5.1.25
  7. CCRC信息安全服务资质认证的8大认证分项。
  8. 录音转文字免费的软件有哪些?看完这篇文章你就知道了
  9. Echarts实战案例代码(16):geomap地图散点图和label轮播的解决方案
  10. python peewee库 和 sqlite3的使用