这题是莫比乌斯反演的典型题也是很有趣的题。

题意:求,其中f为为斐波那契数列

那么首先观察一下指数,发现是我们熟悉的形式,可以转化成这样的形式:

令T=kd,且假设n<m,有:

则原式=

这样的话我们的步骤就是这样的:

线性筛出莫比乌斯函数,同时递推求出f

然后利用f和莫比乌斯函数求出g(枚举倍数,这样把时间复杂度控制在调和级数级别),注意到有时会出现分数(莫比乌斯函数值为-1时),所以对上面的每个f需要求出对应地逆元(费马小定理)

然后对g求出前缀积,这样就可以利用数论分块在根号级的时间内求出答案了,但由于是乘积式,所以在提取一段乘积的时候会出现除法,所以还要对求出的前缀积求出逆元。

注意上面的都是要预处理出的内容

然后就水到渠成了

#include <cstdio>
#include <cmath>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#include <queue>
#include <stack>
#define ll long long
#define mode 1000000007
using namespace std;
ll g[1000005];
ll f[1000005];
ll inv[1000005];
int mu[1000005];
int pri[1000005];
ll mul[1000005];
ll minv[1000005];
int cnt=0;
bool used[1000005];
int T,n,m;
ll pow_mul(ll x,ll y)
{
ll ans=1;
while(y)
{
if(y&1)
{
ans*=x;
ans%=mode;
}
x*=x;
x%=mode;
y/=2;
}
return ans;
}
void init()
{
mu[1]=1;
f[1]=1;
g[1]=1;
inv[1]=1;
for(int i=2;i<=1000000;i++)
{
f[i]=f[i-1]+f[i-2];
f[i]%=mode;
g[i]=1;
inv[i]=pow_mul(f[i],mode-2);
if(!used[i])
{
pri[++cnt]=i;
mu[i]=-1;
}
for(int j=1;j<=cnt&&i*pri[j]<=1000000;j++)
{
used[i*pri[j]]=1;
if(i%pri[j]==0)
{
mu[i*pri[j]]=0;
break;
}
mu[i*pri[j]]=-mu[i];
}
}
for(int i=1;i<=1000000;i++)
{
for(int j=1;i*j<=1000000;j++)
{
if(!mu[j])
{
continue;
}else if(mu[j]==1)
{
g[i*j]*=f[i];
g[i*j]%=mode;
}else
{
g[i*j]*=inv[i];
g[i*j]%=mode;
}
}
}
mul[0]=1;
minv[0]=1;
for(int i=1;i<=1000000;i++)
{
mul[i]=mul[i-1]*g[i]%mode;
minv[i]=pow_mul(mul[i],mode-2);
}
}
ll solve(int x,int y)
{
if(x>y)
{
swap(x,y);
}
ll ans=1;
int last=0;
for(int i=1;i<=x;i=last+1)
{
last=min(x/(x/i),y/(y/i));
ans*=pow_mul(mul[last]*minv[i-1]%mode,(ll)(x/i)*(ll)(y/i)%(mode-1));
ans%=mode;
}
return ans;
}
int main()
{
init();
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&m);
printf("%lld\n",solve(n,m));
}
return 0;
}

bzoj 4816的更多相关文章

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

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

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

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

  3. bzoj 4816: 洛谷 P3704: [SDOI2017]数字表格

    洛谷很早以前就写过了,今天交到bzoj发现TLE了. 检查了一下发现自己复杂度是错的. 题目传送门:洛谷P3704. 题意简述: 求 \(\prod_{i=1}^{N}\prod_{j=1}^{M}F ...

  4. bzoj 4816 [Sdoi2017]数字表格——反演

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4816 \( ans=\prod\limits_{d=1}^{n}f[d]^{\sum\lim ...

  5. bzoj 4816 数字表格 —— 反演

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4816 推导过程同:http://www.cnblogs.com/zhouzhendong/p ...

  6. BZOJ 4816 数字表格

    首先是惯例的吐槽.SDOI题目名称是一个循环,题目内容也是一个循环,基本上过几年就把之前的题目换成另一个名字出出来,喜大普奔亦可赛艇.学长说考SDOI可以考出联赛分数,%%%. 下面放解题报告.并不喜 ...

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

    题目链接 总感觉博客园的\(Markdown\)很..\(gouzhi\),可以看这的. 这个好像简单些啊,只要不犯sb错误 [Update] 真的算反演中比较裸的题了... \(Descriptio ...

  8. 【刷题】BZOJ 4816 [Sdoi2017]数字表格

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

  9. BZOJ 4816 [Sdoi2017]数字表格 ——莫比乌斯反演

    大力反演出奇迹. 然后xjb维护. 毕竟T1 #include <map> #include <ctime> #include <cmath> #include & ...

随机推荐

  1. Django 详解 中间件Middleware

    Django中间件 还是涉及到django的请求生命周期.middle ware 请求穿过中间件到达url,再经过中间件返回给用户. 简单实例 django项目根目录新建一个Middle文件夹,再新建 ...

  2. #6279. 数列分块入门 3(询问区间内小于某个值 xx 的前驱(比其小的最大元素))

    题目链接:https://loj.ac/problem/6279 题目大意:中文题目 具体思路:按照上一个题的模板改就行了,但是注意在整块查找的时候的下标问题. AC代码: #include<b ...

  3. zabbix系列 ~ 自动监控多实例功能

    一 场景     监控mongo的多实例端口二 目标 定制一套模板,根据不同的端口进行批量监控项的生成三 步骤  1 编写py脚本实现端口josin化输出,以便zabbix_server能进行识别  ...

  4. mysql 架构 ~ MGR 与PXC的对比

    一 简介 MGR和PXC的对比 二  WriteSet1 定义 是组件对于写节点应用事务生成binlog的再封装,用来验证其他节点的事务冲突 PXC构成key db_table_组件值data bin ...

  5. 基于html2canvas实现网页保存为图片及图片清晰度优化

    一.实现HTML页面保存为图片 1.1 已知可行方案 现有已知能够实现网页保存为图片的方案包括: 方案1:将DOM改写为canvas,然后利用canvas的toDataURL方法实现将DOM输出为包含 ...

  6. linux系统 之 curl命令

    1,curl命令 在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具.它支持文件的上传和下载,是综合传输工具,但按传统,习惯称url为下载工 ...

  7. 机器学习超参数优化算法-Hyperband

    参考文献:Hyperband: Bandit-Based Configuration Evaluation for Hyperparameter Optimization I. 传统优化算法 机器学习 ...

  8. GridView position = 0重复加载的问题

    在做项目开发中,遇到GridView设置的adapter,adapter中包含异步加载图片的问题,因为gridView item的高度没有做限制,是自适应的,导致positon = 0会在加载时重复出 ...

  9. IObservable 接口

    转载自:https://jingyan.baidu.com/article/d3b74d64ac3b6c1f77e609c1.html 方法/步骤     IObserver<T> 和 I ...

  10. LwIP Application Developers Manual12---Configuring lwIP

    1.前言 2.LwIP makefiles With minimal features C_SOURCES = \ src/api/err.c \ src/core/init.c \ src/core ...