利用gcd相同数相乘,可以比较基础的化到

然后就是设T=ij,利用除法了

但这个西格玛在指数上,怎么办呢?

其实是不影响的,只要保证约数、倍数关系对好就行了

易错点:

1、大量取模逆元快速幂

2、m/i *n/i 要取模P-1、

3、赋初值为1

码:

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
#include<cstring>
#define P 1000000007
#define N 1000005
#define ll long long
int su[N],tot,mu[N],T;
ll sum[N],ny[N],x,y,n,m,i,j,fny[N],f[N];
bool he[N];
ll ksm(ll a,ll b)
{ll daan=1;while(b){if(b%2==1)daan=(daan*a)%P;b/=2;a=(a*a)%P; }return daan;
}
void exgcd(ll a,ll b)
{if(!b){x=1;y=0;return;}exgcd(b,a%b);ll t=y;y=x-(a/b)*y;x=t;
}
void eular()
{ll i,j;mu[1]=1;sum[1]=1;sum[0]=1;for(i=2;i<=N-5;i++){sum[i]=1;if(!he[i]){su[++tot]=i;mu[i]=-1;      }for(j=1;j<=tot&&su[j]*i<=N-5;j++){he[i*su[j]]=1;if(i%su[j]==0){mu[su[j]*i]=0;break;}    else mu[su[j]*i]=-mu[i];   }   }// for(i=1;i<=N-5;i++){for(j=1;j*i<=N-5;j++) {if(mu[j]==1){//  cout<<sum[i*j]<<" ";sum[i*j]=sum[i*j]*f[i]%P;//cout<<sum[i]<<endl;}if(mu[j]==-1){sum[i*j]=sum[i*j]*fny[i]%P;}}}//cout<<i<<" ";//sum[0]=1;for(i=1;i<=N-5;i++){sum[i]=(sum[i]*sum[i-1])%P;exgcd(sum[i],P);ny[i]=x;}////cout<<"p";//for(i=1;i<=1000;i++)cout<<sum[i]<<" ";
}
ll work()
{ll ans=1,lin=0,i;for(i=1;i<=n;i=lin+1){lin=min(n/(n/i),m/(m/i));ans=ans*ksm(sum[lin]*ny[i-1]%P,(n/i)*(m/i)%(P-1))%P;    }return ((ans+P)%P);
}
int main()
{ny[0]=1;fny[0]=1;f[0]=0;f[1]=1;fny[1]=1;for(i=2;i<=N-5;i++){f[i]=(f[i-1]+f[i-2])%P;  exgcd(f[i],P);fny[i]=x;    }
//  for(i=1;i<=100;i++)cout<<fny[i]<<" ";eular();scanf("%d",&T);while(T--){scanf("%lld%lld",&n,&m);if(n>m)swap(n,m);printf("%lld\n",work());}
}

2017.6.15 数字表格 思考记录相关推荐

  1. 2017.6.12 crash的数字表格 思考记录

    很坑的一个题.就是让你求: 可以显然化为: 然后这个gcd就是突破口了,可以考虑gcd的约数. 注:这里的贡献不算1/gcd 这里有个小技巧,就是在设计F和f时,注意是几个互斥的f值相加,并保证相加后 ...

  2. 2017.9.15 最大数maxnumber 思考记录

    数论太难了,就水水结构 都是splay的基本操作,维护最大值和size即可 插入时直接找右子树 查找时往左边找 数据结构不对拍就不要交(奇奇怪怪的错误) 注意:区间合并时要考虑自己这个节点 码: #i ...

  3. 2017.5.15 项链工厂 思考记录

    有是神烦码力费时题. 对于不同的操作只需要抓住一个原则: 顺时针是+   逆时针是-   F是顺逆互换 所以就可以打 区间赋值线段树了(和颜色种数没关系) 犯得错误:1.  开数组  << ...

  4. 2017.3.24 分裂游戏 思考记录

    事先说明:这不是好题解,这只是思考记录 同机房的xp都学博弈了..    感觉还是学学看吧 先来看一下简单的nim: 题目: Alice和Bob放置了N堆不同的石子,编号1..N,第i堆中有A[i]个 ...

  5. 2017.3.6 地精部落 思考记录

    其实这个题第一眼是没有任何思路的 强行无视题解,经过漫长的找规律,终于推出了一个可行的方法: f[i][0/1]i表示最高位的数字,0表示开始是上升,1表示开始是下降. 为什么会推出这个? 1.因为所 ...

  6. 2017.10.29 染色方案 思考记录

    这个题数据特别小,于是想到状压多维之流. 状压是比较麻烦的,虽然也能写,但多维dp明显要好写一些 根据15去设计状态是没有前途的,因为按颜色分一定会MLE 这时就考虑根据5分,这样不同颜色就离散了,就 ...

  7. 2017.10.24 上升序列 思考记录

    终于有会做的题了... 一开始想用正常的lis ,然后从前往后扫, 由于最优查询区间在序列上是按顺序单调递增的,所以想记录每个点取哪个值跳到哪,这样是n*m logn的 然后发现既然是单调递增的那直接 ...

  8. 2017.10.7 括号序列 思考记录

    这个题看起来很简单,但细节比较麻烦.参考完别人的代码后才想出自己的解法的.. 一开始认为已匹配的括号是可以直接消的,所以就只维护了两个变量 但还有区间取反.. 由于和已配对的括号的顺序有关,所以不是很 ...

  9. 2017.9.28 约数研究 思考记录

    这个题一开始可能会想复杂, 然而它需要对答案的贡献进行归类 可以发现,一个约数对其倍数的数贡献是一样的,,所以可以考虑离散 所以直接对于每个数不好求,就可以考虑每个约数的贡献 而每个约数i就有n/i个 ...

最新文章

  1. AI技术诠释全新智能,多方位优化样样贴心
  2. 关于龙芯的争吵我都无语了
  3. java-unrar-0.3.jar_unrar.jar解压缩rar文件
  4. EM算法(Expectation Maximization Algorithm)
  5. jqc3ff继电器引脚图_单片机控制继电器驱动电路图原理分析
  6. Java之路:this关键字的用法
  7. WebAPI框架里设置异常返回格式统一
  8. 让ECSHOP模板支持转smarty时间戳
  9. 中小企业网络推广如何找到切入点
  10. 计算机工程师英语简历模板,计算机软件工程师英文简历模板
  11. Pandas库之DataFrame
  12. python爬取豆瓣读书界面的书名、作者、价格、导入数据库_python爬虫:利用正则表达式爬取豆瓣读书首页的book...
  13. 新医药与生命健康专题讲座
  14. Matplotlib可视化图表
  15. VSCode 的扩展包C/C++ IntelliSense, debugging, and code browsing的IntelliSense功能无法使用,远程服务器linux上面的不能用
  16. 学猫叫用计算机歌词,抖音学猫叫是什么歌 学猫叫歌曲歌词
  17. win7系统自带的录像在哪里 Win7问题步骤记录器教程详解
  18. 如何编辑制作并发送手机报?
  19. 腾讯徐春明:互联网金融行业HBase实践与创新
  20. 第五届浙江省大学生网络与信息安全竞赛预赛 部分WP

热门文章

  1. java knn文本分类算法_使用KNN算法的文本分类.PDF
  2. mysql 视图 速度慢_mysql 视图查询速度慢
  3. 在虚拟机中是无法运行CarlaUE.sh文件的
  4. TikZ绘图示例——尺规作图: 圆内接正五边形的近似画法
  5. 常用Latex表达式符号——组合数学篇
  6. Python内置模块---高级文件操作模块
  7. 将一个数组中不重复_你不知道的解法:数组中重复的数字
  8. 分类信息网站源码_分类信息网站如何增加搜索引收录
  9. 【python基础知识】error C1083: 无法打开包括文件: “numpy/arrayobject.h”: No such file
  10. python跳过错误_Pandas之read_csv()读取文件跳过报错行的解决