4816: [Sdoi2017]数字表格

Time Limit: 50 Sec  Memory Limit: 128 MB
Submit: 1302  Solved: 652

Description

Doris刚刚学习了fibonacci数列。用f[i]表示数列的第i项,那么
f[0]=0
f[1]=1
f[n]=f[n-1]+f[n-2],n>=2
Doris用老师的超级计算机生成了一个n×m的表格,第i行第j列的格子中的数是f[gcd(i,j)],其中gcd(i,j)表示i,
j的最大公约数。Doris的表格中共有n×m个数,她想知道这些数的乘积是多少。答案对10^9+7取模。

Input

有多组测试数据。

第一个一个数T,表示数据组数。
接下来T行,每行两个数n,m
T<=1000,1<=n,m<=10^6

Output

输出T行,第i行的数是第i组数据的结果

Sample Input

3
2 3
4 5
6 7

Sample Output

1
6
960

Problem:    
              

                         

Solution:
推导:        
                  
套路枚举gcd:
                 

                    

根据公式二:    
                
枚举dx:
暴力预处理出:  
                  

void getmu()
{mu[1]=1;for(int i=2;i<N;i++){if(!vis[i]) prime[++cnt]=i,mu[i]=-1;for(int j=1;j<=cnt;j++){if(i*prime[j]>=N) break;vis[i*prime[j]]=1;if(i%prime[j]==0) {mu[i*prime[j]]=0;break;}else mu[i*prime[j]]=-mu[i];}}f[1]=1;for(int i=2;i<N;i++) f[i]=(f[i-1]+f[i-2])%mod;for(int i=1;i<N;i++) inver[i]=qpow(mod-2,f[i]);fill(g,g+N,1);for(int i=1;i<N;i++)for(int j=1;i*j<N;j++)if(mu[j]) g[i*j]=g[i*j]*(mu[j]==1?f[i]:inver[i])%mod;for(int i=1;i<N;i++) g[i]=g[i]*g[i-1]%mod;
}


附上代码: 
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+12;
const int mod=1e9+7;
int vis[N],mu[N],prime[N],cnt;
long long f[N],g[N],inver[N];long long qpow(long long a,long long b)
{long long ans=1LL;while(a){if(a&1) ans=ans*b%mod;b=b*b%mod;a>>=1;    }return ans;
}
void getmu()
{mu[1]=1;for(int i=2;i<N;i++) {if(!vis[i]) prime[++cnt]=i,mu[i]=-1;for(int j=1;j<=cnt;j++) {if(i*prime[j]>=N) break;vis[i*prime[j]]=1;if(i%prime[j]==0) {mu[i*prime[j]]=0;break;}else mu[i*prime[j]]=-mu[i];}}f[1]=1;for(int i=2;i<N;i++) f[i]=(f[i-1]+f[i-2])%mod;for(int i=1;i<N;i++) inver[i]=qpow(mod-2,f[i]);fill(g,g+N,1);for(int i=1;i<N;i++)for(int j=1;i*j<N;j++) if(mu[j]) g[i*j]=g[i*j]*(mu[j]==1?f[i]:inver[i])%mod;for(int i=1;i<N;i++) g[i]=g[i]*g[i-1]%mod;
}int main()
{freopen("a.in","r",stdin);getmu();int T;scanf("%d",&T);while(T--) {int n,m;scanf("%d%d",&n,&m);if(n>m) swap(n,m);long long ans=1;int pos;for(int i=1;i<=n;i=pos+1){pos=min(n/(n/i),m/(m/i));ans=ans*qpow((long long)(n/i)*(m/i),g[pos]*qpow(mod-2,g[i-1])%mod)%mod;}printf("%lld\n",ans);}    return 0;
}


转载于:https://www.cnblogs.com/Heey/p/9100705.html

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

  1. BZOJ 4816 [Sdoi2017]数字表格

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

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

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

  3. SDOI2017 数字表格

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

  4. [SDOI2017]数字表格

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

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

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

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

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

  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的数字表格

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

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

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

最新文章

  1. jenkins 漏洞集合 简介
  2. applicationContext.xml存放的位置
  3. Python学习笔记(三)——条件语句、循环语句
  4. 人类首张黑洞照片咋拍的:7千TB数据太大网络传不了只能飞机运
  5. 设计模式——抽象工厂模式
  6. IE6、7 a链接内图片加滤镜后导致a标签链接失效问题解决
  7. java character类
  8. foreach循环怎么获取全部返回值_PHP跳出循环的方法语句有哪些
  9. IIS 添加支持json格式文件
  10. C#基础-获得当前程序的 空间名.类名.方法名
  11. 百度SEO标题关键词伪原创组合工具
  12. SPSS应用——时间序列分析
  13. 分享一款好用的英语词频统计软件
  14. 正则表达式验证邮箱手机号
  15. Java经典书籍推荐
  16. ★ 最长递增子序列问题 (最多不相交路径)(分层思想) 网络流最大流
  17. app显示服务器图片不显示,如何将存在本地服务器的图片,在APP前台显示
  18. PCIe学习笔记(一)-------1.5 一个TLP包的传输过程
  19. 数据库设计(电商平台)
  20. 对称信道容量的计算MATLAB,准对称信道信道容量的证明及其Matlab实现

热门文章

  1. 安卓gridview控件的使用
  2. 基于深度信念网络的事件识别
  3. 基于javaweb的文具学习用品商城系统(java+ssm+jsp+jquery+mysql)
  4. 如何高效学习 三天学完一本书
  5. 2021刷百度统计关键词的灰产嫌疑人徐某被抓
  6. 【Android】在有menu键的手机上显示ActionBar上的Menu键
  7. 腾讯QQ不为人知的使用技巧
  8. 中南OJ 2012年8月月赛 I题 Imagination
  9. 基于Html+Css+javascript的体育网站
  10. mac算法c语言,MAC算法原理