BZOJ4816 [Sdoi2017]数字表格
来源:互联网 发布:星野竜一 知乎 编辑:程序博客网 时间:2024/05/21 11:08
我们要求
构造函数g,使得
那么要求的就变成了
更换枚举顺序把d提前,得到
分块即可
至于如何求g,由我们构造g的方法可得
那么对于每个i,求出g[i]后枚举i的所有倍数然后除以g[i]即可,由调和级数得预处理部分的复杂度是n log的
#include<iostream>#include<cstring>#include<ctime>#include<cmath>#include<algorithm>#include<iomanip>#include<cstdlib>#include<cstdio>#include<map>#include<bitset>#include<set>#include<stack>#include<vector>#include<queue>using namespace std;#define MAXN 1000010#define MAXM 1010#define ll long long#define eps 1e-8#define MOD 1000000007#define INF 1000000000ll f[MAXN],g[MAXN],ng[MAXN];int n,m;ll mi(ll x,ll y){ ll re=1; while(y){ if(y&1){ (re*=x)%=MOD; } (x*=x)%=MOD; y>>=1; } return re;}int main(){ int i,j; f[1]=g[1]=1; for(i=2;i<MAXN;i++){ f[i]=(f[i-1]+f[i-2])%MOD; g[i]=f[i]; } g[0]=ng[0]=1; for(i=1;i<MAXN;i++){ ng[i]=mi(g[i],MOD-2); for(j=i+i;j<MAXN;j+=i){ (g[j]*=ng[i])%=MOD; } (g[i]*=g[i-1])%=MOD; (ng[i]*=ng[i-1])%=MOD; } int tmp; scanf("%d",&tmp); while(tmp--){ ll ans=1; scanf("%d%d",&n,&m); if(n>m){ swap(n,m); } for(i=1;i<=n;i++){ int ti=min(n/(n/i),m/(m/i)); (ans*=mi(g[ti]*ng[i-1]%MOD,(ll)(n/i)*(m/i)))%=MOD; i=ti; } printf("%lld\n",ans); } 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]数字表格 莫比乌斯反演
- SimpleDateFormat格式字符对应表
- 访问服务器地址,默认添加项目后缀名
- hiho一下 第145周
- mysql 里面 group_concat函数设置最大字符长度
- 批量上传图片前展示
- BZOJ4816 [Sdoi2017]数字表格
- Android——使用android-support-multidex解决Dex超出方法数的限制问题
- jenkins添加ldap
- 使用JS,如何给下拉列表动态的添加一个option 选项?
- 单链表的方法函数实现-(严蔚敏版)
- ssm框架 详细整合教程(spring+spring-mvc+mybatis)
- java中string与date(日期)格式之间的转换
- HTTP
- 二叉树的层次遍历 II