[BZOJ4816][Sdoi2017]数字表格 数学
来源:互联网 发布:php进阶书籍推荐知乎 编辑:程序博客网 时间:2024/05/17 09:32
考虑每个
转化成枚举
预处理小括号内的部分,令
单次询问只需要回答
易证
预处理
#include <bits/stdc++.h>#define mod 1000000007#define N 1000050#define tp 1000000using namespace std;typedef long long LL;inline int rd() {int r;scanf("%d",&r);return r;}bool np[N];int eu[N],pr[N],g[N],fib[N],sum[N],siv[N],cnt,n,m,ans;inline int qp(int a,long long b) { int ret = 1; while (b) { if (b&1) ret = 1LL * ret * a % mod; b >>= 1, a = 1LL * a * a % mod; } return ret;}void preset() { eu[1] = 1; for (int i=2;i<=tp;i++) { if (!np[i]) pr[++cnt] = i, eu[i] = -1; for (int j=1;j<=cnt && pr[j]*i<=tp;j++) { np[i*pr[j]] = 1; if (i%pr[j] == 0) { eu[i*pr[j]] = 0; break; } eu[i*pr[j]] = -eu[i]; } } fib[0] = 0, fib[1] = 1; for (int i=2;i<=tp;i++) fib[i] = (fib[i-1] + fib[i-2]) % mod; for (int i=1;i<=tp;i++) g[i] = 1; sum[0] = siv[0] = 1; for (int i=1;i<=tp;++i) { int cur = fib[i]; int inv = qp(cur, mod-2); for (int j=1;i*j<=tp;++j) { if (eu[j] == 0) continue; g[i*j] = eu[j] == 1 ? 1LL * g[i*j] * cur % mod: 1LL * g[i*j] * inv % mod; } sum[i] = 1LL * sum[i-1] * g[i] % mod; siv[i] = 1LL * siv[i-1] * qp(g[i], mod-2) % mod; }}void solve() { n = rd(), m = rd(), ans = 1; if (n>m) swap(n,m); for (int i=1,lst,cur;i<=n;i=lst+1) { lst = min(n/(n/i), m/(m/i)); cur = 1LL * sum[lst] * siv[i-1] % mod; ans = 1LL * ans * qp(cur, 1LL*(n/i)*(m/i)) % mod; } printf("%d\n",ans);}int main() { freopen("product.in","r",stdin); freopen("product.out","w",stdout); preset(); for (int T=rd();T;T--) solve(); return 0;}
阅读全文
0 0
- [BZOJ4816][Sdoi2017]数字表格 数学
- BZOJ4816 [Sdoi2017]数字表格
- bzoj4816: [Sdoi2017]数字表格
- 【bzoj4816】[Sdoi2017]数字表格
- [bzoj4816][SDOI2017]数字表格
- bzoj4816: [Sdoi2017]数字表格
- BZOJ4816: [Sdoi2017]数字表格
- [数论 反演]BZOJ4816 [Sdoi2017]数字表格
- [莫比乌斯反演] BZOJ4816: [Sdoi2017]数字表格
- [BZOJ4816][SDOI2017]数字表格(莫比乌斯反演)
- [BZOJ4816]数字表格
- 4816: [Sdoi2017]数字表格
- 【SDOI2017】数字表格
- 【SDOI2017】数字表格
- 【BZOJ4816】数字表格,反演+枚举约数
- BZOJ 4816 [Sdoi2017]数字表格
- 【jzoj100006】【SDOI2017】【数字表格】【数论】
- bzoj 4816: [Sdoi2017]数字表格 莫比乌斯反演
- 算法谜题96 平铺楼梯区域
- IOS-- UIView中的坐标转换convertPoint
- maven项目部署后没有依赖的jar包
- C#中Math类集合
- 数据结构(栈--两个队列实现)
- [BZOJ4816][Sdoi2017]数字表格 数学
- numpy知识
- android柱状图实现
- Spring中通过注解配置bean(1)
- zkCli.sh命令
- LVS:三种负载均衡方式比较(写得不错)
- 将数列中的非零值移至开始(保持原来的顺序不变),而零值移至末尾
- jsp memcached session 共享(转载)
- Java开发工具日常设置汇总