BZOJ4816 Sdoi2017数字表格
一开始只推出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数字表格的更多相关文章
- 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用老师 ...
- BZOJ4816 [Sdoi2017]数字表格 数论 莫比乌斯反演
原文链接http://www.cnblogs.com/zhouzhendong/p/8666106.html 题目传送门 - BZOJ4816 题意 定义$f(0)=0,f(1)=1,f(i)=f(i ...
- BZOJ4816 [Sdoi2017]数字表格 【莫比乌斯反演】
题目 Doris刚刚学习了fibonacci数列.用f[i]表示数列的第i项,那么 f[0]=0 f[1]=1 f[n]=f[n-1]+f[n-2],n>=2 Doris用老师的超级计算机生成了 ...
- BZOJ4816 SDOI2017 数字表格 莫比乌斯反演
传送门 做莫比乌斯反演题显著提高了我的\(\LaTeX\)水平 推式子(默认\(N \leq M\),分数下取整,会省略大部分过程) \(\begin{align*} \prod\limits_{i= ...
- [bzoj4816][Sdoi2017]数字表格 (反演+逆元)
(真不想做莫比乌斯了) 首先根据题意写出式子 ∏(i=1~n)∏(j=1~m)f[gcd(i,j)] 很明显的f可以预处理出来,解决 根据套路分析,我们可以先枚举gcd(i,j)==d ∏(d=1~n ...
- BZOJ:4816: [Sdoi2017]数字表格
4816: [Sdoi2017]数字表格 Time Limit: 50 Sec Memory Limit: 128 MBSubmit: 501 Solved: 222[Submit][Status ...
- [Sdoi2017]数字表格 [莫比乌斯反演]
[Sdoi2017]数字表格 题意:求 \[ \prod_{i=1}^n \prod_{j=1}^m f[(i,j)] \] 考场60分 其实多推一步就推倒了... 因为是乘,我们可以放到幂上 \[ ...
- 【BZOJ4816】数字表格(莫比乌斯反演)
[BZOJ4816]数字表格(莫比乌斯反演) 题面 BZOJ 求 \[\prod_{i=1}^n\prod_{j=1}^mf[gcd(i,j)]\] 题解 忽然不知道这个要怎么表示... 就写成这样吧 ...
- 【BZOJ 4816】 4816: [Sdoi2017]数字表格 (莫比乌斯)
4816: [Sdoi2017]数字表格 Time Limit: 50 Sec Memory Limit: 128 MBSubmit: 666 Solved: 312 Description Do ...
随机推荐
- yolo详解
文章<You Only Look Once: Unified, Real-Time Object Detection>提出方法下面简称YOLO. 目前,基于深度学习算法的一系列目标检测算法 ...
- angularJs的继承
为什么要继承,本来是后端的概念,但是同样适用于前端开发.继承,无疑是将通用的东西抽取出来. 下面介绍的是angular的伪继承,就是说是通过继承scope这个变量来实现的.代码很简单,一行代码就可以. ...
- Codeforces Round #481 (Div. 3) D. Almost Arithmetic Progression
http://codeforces.com/contest/978/problem/D 题目大意: 给你一个长度为n的b(i)数组,你有如下操作: 对数组中的某个元素+1,+0,-1.并且这个元素只能 ...
- Linux(Debian)软件安装
# 配置/etc/apt/sources.list 通过root权限修改/etc/apt/sources.list $ su #输入密码进入root权限 $ chmod 0666 /etc/apt/s ...
- 一个ssm综合小案例-商品订单管理----写在前面
学习了这么久,一直都是零零散散的,没有把知识串联起来综合运用一番 比如拦截器,全局异常处理,json 交互,RESTful 等,这些常见技术必须要掌握 接下来呢,我就打算通过这么一个综合案例把这段时间 ...
- 模拟jQuery中的ready方法及实现按需加载css,js
一.ready函数的实现 经常用jQuery类库或其他类库中的ready方法,有时候想想它们到底是怎么实现的,但是看了一下jQuery中的源码,涉及到的模块比较多,(水平有限)代码比较难看懂:自己结合 ...
- [原]JUnit 自定义扩展思路
1. 理解Annotation,http://www.cnblogs.com/mandroid/archive/2011/07/18/2109829.html 2. JUNIT整体执行过程分析,htt ...
- Flex 经验笔记二
向 Module 传递数据:好像只能传递些像 整型,字符型等简单类型的数据,也能传递像 json 这样的 Object 对象,但如果 Object 对象是从层的,其子级数据,好像也读取不到. func ...
- 20155314 2016-2017-2 《Java程序设计》第5周学习总结
20155314 2016-2017-2 <Java程序设计>第5周学习总结 教材学习内容总结 理解异常架构 牚握try...catch...finally处理异常的方法 会用throw, ...
- 无锁并发框架Disruptor学习入门
刚刚听说disruptor,大概理一下,只为方便自己理解,文末是一些自己认为比较好的博文,如果有需要的同学可以参考. 本文目标:快速了解Disruptor是什么,主要概念,怎么用 1.Disrupto ...