一开始只推出O(TN)的做法,后来看了看发现再推一步就好了。

我们只需要枚举gcd就可以啦。

然后我们改变一下枚举顺序

设T为dk

预处理中间那部分前缀积就好了。

 #include<bits/stdc++.h>
using namespace std;
const int N=1e6+,mod=1e9+;
int n,m,p[N/],miu[N],g[N],f[N],inv[N],cnt;bool v[N];
typedef long long ll;
int qmod(int x,ll y)
{
int ans=;
while(y)
{
if(y&)ans=1ll*ans*x%mod;
x=1ll*x*x%mod;y>>=;
}
return ans;
}
void init()
{
miu[]=;
for(int i=;i<=1e6;++i)
{
if(!v[i])
{
p[++cnt]=i;miu[i]=-;
}
for(int j=;j<=cnt&&i*p[j]<=1e6;++j)
{
v[i*p[j]]=;
if(i%p[j]==)break;
miu[i*p[j]]=-miu[i];
}
}
for(int i=;i<=1e6;++i)g[i]=;
f[]=;f[]=g[]=;
for(int i=;i<=1e6;++i)f[i]=(f[i-]+f[i-])%mod;
for(int i=;i<=1e6;++i)
{
inv[i]=qmod(f[i],mod-);
for(int j=i,k=;j<=1e6;j+=i,k++)
if(miu[k])
{
if(miu[k]==-)
g[j]=1ll*g[j]*inv[i]%mod;
else
g[j]=1ll*g[j]*f[i]%mod;
}
g[i]=1ll*g[i]*g[i-]%mod;
}
return;
}
int main()
{
init();int T;
scanf("%d",&T);
for(int k=;k<=T;++k)
{
scanf("%d%d",&n,&m);
if(n>m)swap(n,m);int ans=;
for(int i=,j;i<=n;i=j+)
{
j=min(n/(n/i),m/(m/i));
ans=1ll*ans*qmod(1ll*g[j]*qmod(g[i-],mod-)%mod,1ll*(n/i)*(m/i))%mod;
}
printf("%d\n",(ans+mod)%mod);
}
return ;
}

BZOJ4816 Sdoi2017数字表格的更多相关文章

  1. bzoj4816 [Sdoi2017]数字表格

    Description Doris刚刚学习了fibonacci数列.用f[i]表示数列的第i项,那么 f[0]=0 f[1]=1 f[n]=f[n-1]+f[n-2],n>=2 Doris用老师 ...

  2. BZOJ4816 [Sdoi2017]数字表格 数论 莫比乌斯反演

    原文链接http://www.cnblogs.com/zhouzhendong/p/8666106.html 题目传送门 - BZOJ4816 题意 定义$f(0)=0,f(1)=1,f(i)=f(i ...

  3. BZOJ4816 [Sdoi2017]数字表格 【莫比乌斯反演】

    题目 Doris刚刚学习了fibonacci数列.用f[i]表示数列的第i项,那么 f[0]=0 f[1]=1 f[n]=f[n-1]+f[n-2],n>=2 Doris用老师的超级计算机生成了 ...

  4. BZOJ4816 SDOI2017 数字表格 莫比乌斯反演

    传送门 做莫比乌斯反演题显著提高了我的\(\LaTeX\)水平 推式子(默认\(N \leq M\),分数下取整,会省略大部分过程) \(\begin{align*} \prod\limits_{i= ...

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

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

  6. BZOJ:4816: [Sdoi2017]数字表格

    4816: [Sdoi2017]数字表格 Time Limit: 50 Sec  Memory Limit: 128 MBSubmit: 501  Solved: 222[Submit][Status ...

  7. [Sdoi2017]数字表格 [莫比乌斯反演]

    [Sdoi2017]数字表格 题意:求 \[ \prod_{i=1}^n \prod_{j=1}^m f[(i,j)] \] 考场60分 其实多推一步就推倒了... 因为是乘,我们可以放到幂上 \[ ...

  8. 【BZOJ4816】数字表格(莫比乌斯反演)

    [BZOJ4816]数字表格(莫比乌斯反演) 题面 BZOJ 求 \[\prod_{i=1}^n\prod_{j=1}^mf[gcd(i,j)]\] 题解 忽然不知道这个要怎么表示... 就写成这样吧 ...

  9. 【BZOJ 4816】 4816: [Sdoi2017]数字表格 (莫比乌斯)

    4816: [Sdoi2017]数字表格 Time Limit: 50 Sec  Memory Limit: 128 MBSubmit: 666  Solved: 312 Description Do ...

随机推荐

  1. sql查询结果存入DataTable,然后从DataTable取数据

    public static DataTable SqlConnectionInformation() { string connstr = ConfigurationManager.Connectio ...

  2. vim文本删除方法 Linux

    1,先打开某个文件: vim   filename 2,转到文件结尾 在命令模式输入 G 3,转到10行 在命令模式输入 10G 4,删除所有内容:先用G 转到文件尾,然后使用下面命令: :1, .d ...

  3. C#_界面程序_数码游戏

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  4. javascript命名空间

    命名空间:命名空间有助于减少程序中所需要的全局变量的数量,并且同时还有助于避免命名冲突或过长的名字前缀. 板栗: var MYAPP = MYAPP || {}; MYAPP.namespace = ...

  5. C标准库函数中复杂的函数声明

    <signal.h> 中有一个复杂的函数声明.很叫人费解. void (*signal(int sig, void (*handler)(int)))(int); 我们按照向右看向左看的黄 ...

  6. tensorflow的卷积和池化层(二):记实践之cifar10

    在tensorflow中的卷积和池化层(一)和各种卷积类型Convolution这两篇博客中,主要讲解了卷积神经网络的核心层,同时也结合当下流行的Caffe和tf框架做了介绍,本篇博客将接着tenso ...

  7. 【配置】Spring Struts配置信息

  8. Python内置模块与标准库

    Python内置模块就是标准库(模块)吗?或者说Python的自带string模块是内置模块吗? 答案是:string不是内置模块,它是标准库.也就是说Python内置模块和标准库并不是同一种东西. ...

  9. 【技术知识】恶意PDF文件分析-PDFdump的问题

    1.提醒 百度分析恶意PDF文件,很多都是推荐PDFdump.在某次沙箱产品分析出疑似高级威胁的PDF样本后,我使用PDFdump查看ShellCode的加密数据,分析后并没有找到相关的ShellCo ...

  10. PyCharm 2018实现远程调试代码

    pycharm是一个非常强大的python开发工具,现在很多代码最终在线上跑的环境都是linux,而开发环境可能还是windows下开发,这就需要经常在linux上进行调试,或者在linux对代码进行 ...