there

#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
typedef long long ll;
int T, n, m, pri[1000005], pricnt, mu[1000005], f[1000005], g[1000005], F[1000005];
bool isp[1000005];
const int mod=1000000007;
template <typename _T> int ksm(int a, _T b){
int re=1;
while(b){
if(b&1) re = (ll)re * a % mod;
a = (ll)a * a % mod;
b >>= 1;
}
return re;
}
void shai(){
memset(isp, true, sizeof(isp));
isp[0] = isp[1] = false;
mu[1] = 1;
for(int i=2; i<=1000000; i++){
if(isp[i]) pri[++pricnt] = i, mu[i] = -1;
for(int j=1; j<=pricnt && (ll)i*pri[j]<=1000000; j++){
isp[i*pri[j]] = false;
if(i%pri[j]==0){
mu[pri[j]*i] = 0;
break;
}
else mu[pri[j]*i] = -mu[i];
}
}
f[0] = 0;
f[1] = g[1] = F[1] = F[0] = 1;
for(int i=2; i<=1000000; i++){
f[i] = (f[i-1] + f[i-2]) % mod;
g[i] = ksm(f[i], mod-2);
F[i] = 1;
}
for(int i=1; i<=1000000; i++)
if(mu[i]!=0)
for(int j=i; j<=1000000; j+=i)
F[j] = (ll)F[j] * (mu[i]>0?f[j/i]:g[j/i]) % mod;
for(int i=1; i<=1000000; i++)
F[i] = (ll)F[i-1] * F[i] % mod;
}
int calc(int n, int m){
int re=1;
for(int i=1; i<=n; ){
int nxt=min(n/(n/i), m/(m/i));
int tmp1=(ll)F[nxt]*ksm(F[i-1], mod-2)%mod;
int faq=ksm(tmp1, (ll)(n/i)*(m/i));
re = (ll)re * faq % mod;
i = nxt + 1;
}
return re;
}
int main(){
cin>>T;
shai();
while(T--){
scanf("%d %d", &n, &m);
if(n>m) swap(n, m);
printf("%d\n", calc(n, m));
}
return 0;
}

loj2000 「SDOI2017」数字表格的更多相关文章

  1. 「SDOI2017」数字表格

    题目链接 问题分析 \[ \begin{aligned} Ans&=\prod_{i=1}^n\prod_{j=1}^mf[\gcd(i,j)]\\ &=\prod_{t=1}^nf( ...

  2. 「SDOI2017」树点涂色 解题报告

    「SDOI2017」树点涂色 我sb的不行了 其实一开始有一个类似动态dp的想法 每个点维护到lct树上到最浅点的颜色段数,然后维护一个\(mx_{0,1}\)也就是是否用虚儿子的最大颜色 用个set ...

  3. loj#2128. 「HAOI2015」数字串拆分 矩阵乘法

    目录 题目链接 题解 代码 题目链接 loj#2128. 「HAOI2015」数字串拆分 题解 \(f(s)\)对于\(f(i) = \sum_{j = i - m}^{i - 1}f(j)\) 这个 ...

  4. LibreOJ 2003. 「SDOI2017」新生舞会 基础01分数规划 最大权匹配

    #2003. 「SDOI2017」新生舞会 内存限制:256 MiB时间限制:1500 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: 匿名 提交提交记录统计讨论测试数据   题目描述 ...

  5. AC日记——「SDOI2017」序列计数 LibreOJ 2002

    「SDOI2017」序列计数 思路: 矩阵快速幂: 代码: #include <bits/stdc++.h> using namespace std; #define mod 201704 ...

  6. 「SDOI2016」数字配对

    「SDOI2016」数字配对 题目大意 传送门 题解 \(a_i\) 是 \(a_j\) 的倍数,且 \(\frac{a_i}{a_j}\) 是一个质数,则将 \(a_i,a_j\) 质因数分解后,其 ...

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

    数字表格 Time Limit: 50 Sec  Memory Limit: 128 MB[Submit][Status][Discuss] Description Doris刚刚学习了fibonac ...

  8. 【LOJ】#2128. 「HAOI2015」数字串拆分

    题解 题中给的函数可以用矩阵快速幂递推 我们记一个数组dp[i](这个数组每个元素是一个矩阵)表示从1到i所有的数字经过拆分矩阵递推的加和 转移方法是 \(dp[i] = \sum_{j = 0}^{ ...

  9. LOJ2269. 「SDOI2017」切树游戏 [FWT,动态DP]

    LOJ 思路 显然是要DP的.设\(dp_{u,i}\)表示\(u\)子树内一个包含\(u\)的连通块异或出\(i\)的方案数,发现转移可以用FWT优化,写成生成函数就是这样的: \[ dp_{u}= ...

随机推荐

  1. 在使用添加按钮给table插入新的一行时遇见的问题总结及处理方法

    添加按钮的功能:点击添加按钮之后完成添加新的一行. 遇见的问题:当多次点击添加按钮生成新的多行之后,生成的每行内部按钮的保存按钮点击事件出现最晚添加的一行的行内保存点击事件执行一次,倒数第二次添加的行 ...

  2. 关于Linux系统启动时出现UVD not responding, Trying to reset the vcpu问题的解决

    本人的老古董笔记本!不知道什么时候显卡烧坏了 每次启动Linux的时候就会出现错误,信息如下: UVD not responding, trying to reset the VCPU! 讲道理,显卡 ...

  3. JFinal教程:JFinal极速开发企业实战百集JFinal视频教程发布

    课程名称:JFinal极速开发企业实战 课程长度:100课时 课程作者:小木(909854136) 课程地址:http://edu.csdn.net/course/detail/1968 官网网址:h ...

  4. 解除phpMyAdmin导入大型MySQL数据库文件大小限制

    phpMyAdmin 导入大型数据库文件大小限制配置… 1. 修改 php.ini 文件中下列3项的值: upload_max_filesize, memory_limit 和 post_max_si ...

  5. SC || Git 相关知识

    发现大佬的博客:https://www.cnblogs.com/onetwo/p/4157610.html 注:图片来自小姐姐的笔记~ ┉┉┉∞ ∞┉┉┉┉∞ ∞┉┉┉∞ ∞┉┉┉┉┉∞ ∞┉┉┉┉∞ ...

  6. mybatis association嵌套association的两级嵌套问题

    今天遇到了一个双表连接查询以及自关联的问题,由于第一次遇到,所以在这记下,日后好查阅 针对一个表的关联属性本身也有自关联的情况下,可以用association嵌套association的方法来处理. ...

  7. window.addEventListener介绍说明

    原型 public override function addEventListener(type:String, listener:Function, useCapture:Boolean = fa ...

  8. redis基础知识学习

    数据结构:1.String 添加: set key value get key getset key value (先get再set) incr key (key对应value原子性递增1) decr ...

  9. 使用mfc CHtmlView内存泄露解决方法

    第一步,谷歌有文章说CHtmlView部分api使用BSTR没释放: 解决方法是重写一下接口: CString GetFullName() const; CString GetFullName() c ...

  10. c++ 创建路径方法

    linux.unix平台 #include "stdio.h" #include "stdlib.h" #include <sys/types.h> ...