题目

智力下降严重

显然要反演了呀

首先必须满足\(x|y\),否则答案是\(0\)

我们枚举这个数列的\(gcd\)是\(d\)或者\(d\)的倍数

于是答案就是

\[\sum_{x|d}[d|y]\mu(\frac{x}{d})g(\frac{y}{d})
\]

\(g(d)\)表示和为\(d\)的正整数数列的数量,显然就是插一下板,于是\(g(d)=\sum_{i=1}^d\binom{d-1}{i-1}=2^{d-1}\)

代码

#include<bits/stdc++.h>
#define re register
#define LL long long
inline int read() {
char c=getchar();int x=0;while(c<'0'||c>'9') c=getchar();
while(c>='0'&&c<='9') x=(x<<3)+(x<<1)+c-48,c=getchar();return x;
}
const int mod=1e9+7;
const int maxn=1e5+5;
inline int ksm(int a,int b) {
int S=1;
for(;b;b>>=1,a=1ll*a*a%mod) if(b&1) S=1ll*S*a%mod;
return S;
}
int n,m,T,ans;
int f[maxn],p[maxn>>1],mu[maxn];
inline int getmu(int x) {
if(x<=T) return mu[x];int now=0;
for(re int i=1;i<=p[0]&&x!=1;++i) {
if(x%p[i]) continue;
x/=p[i];now^=1;
if(x%p[i]==0) return 0;
}
if(x!=1) now^=1;
if(!now) return 1;return -1;
}
inline void add(int i) {
if(i%n) return;
int x=getmu(i/n);
if(x==1) ans=(ans+ksm(2,m/i-1))%mod;
if(x==-1) ans=(ans-ksm(2,m/i-1)+mod)%mod;
}
int main() {
scanf("%d%d",&n,&m);
if(m%n) {puts("0");return 0;}
T=std::ceil(std::sqrt(m/n));f[1]=mu[1]=1;
for(re int i=2;i<=T;i++) {
if(!f[i]) p[++p[0]]=i,mu[i]=-1;
for(re int j=1;j<=p[0]&&p[j]*i<=T;++j) {
f[p[j]*i]=1;if(i%p[j]==0) break;
mu[p[j]*i]=-1*mu[i];
}
}
for(re int i=1;i*i<=m;++i) {
if(m%i) continue;
add(i);if(m/i!=i) add(m/i);
}
printf("%d\n",ans);
return 0;
}

最新文章

  1. Unity3D 预设打包的注意事项
  2. AppStore 上架注意事项及错误修改
  3. 9月13日JavaScript语句循环(100以备奇偶数、100以内与7先关的数、100以内整数的和、10以内阶乘、乘法口诀、篮球弹起高度、64格子放东西)
  4. 打开Domion 提示: 管理员ID过期
  5. idea+git
  6. 设计模式之原型模式(Prototype)
  7. .net 开源项目
  8. mysql操作1
  9. Ionic文件目录说明
  10. C# MVC 自学笔记—5 添加模型
  11. java学习笔记10--枚举
  12. HTML5 &lt;canvas&gt; 基础学习
  13. Mysql中日期时间型解析
  14. 程序一 用记事本建立文件src.dat,其中存放若干字符。编写程序,从文件src.dat中读取数据,统计其中的大写字母、小写字母、数字、其它字符的个数,并将这些数据写入到文件test.dat中。
  15. Vue源码之----为什么Vue中Array的pop,push等方法可以reactive,而Array[0]=&#39;a&#39;这样的方法不会reactive?
  16. ;html5斜体字
  17. 第五周助教工作总结——NWNU李泓毅
  18. java之数据库连接池-dbcp&amp;c3p0&amp;dbutils
  19. 存储过程DT参数
  20. Android的框架功能说明

热门文章

  1. MySQL主从复制&amp;读写分离&amp;分库分表
  2. linux 重定向命令
  3. ionic-CSS:ionic Range
  4. ionic:安装
  5. (转)python:Redirection is not supported
  6. plugin python was not installed: Cannot download &#39;&#39;
  7. 剑指offer——30包含min函数的栈
  8. 20140321 sizeof 虚函数与虚函数表 静态数组空间 动态数组空间 位字段
  9. VBA提取HTML文件信息
  10. VBA字典做数据有效性