题面

提前知识:gcd(a/d,b/d)*d=gcd(a,b);

     lcm(a,b)=a*b/gcd(a,b);

那么可以比较轻松的算出:gcd(x/a1,a0/a1)==gcd(b1/b0,b1/x)==1;

那么我们求解的x仅仅从b1的因数中挑选就可以,x要符合以上条件且x%a1==0;

时间复杂度是O(sqrt(b1)*n+log(n));

#include <iostream>
#include <cstring>
#include <cmath>
#define cin std::ios::sync_with_stdio(false); cin
#define cout std::ios::sync_with_stdio(false); cout
using namespace std;
int a0,a1,b0,b1;
int tmp[];
int gcd(int a,int b)
{
if(!b) return a;
return gcd(b,a%b);
}
int main()
{
register int t;
cin>>t;
while(t--){
cin>>a0>>a1>>b0>>b1;
memset(tmp,,sizeof(tmp));
tmp[]=;
int op=sqrt(b1);
for(register int i=;i<=op;i++){
if(b1%i==) tmp[++tmp[]]=i;
}
int ans=;
for(register int i=;i<=tmp[];i++){
if(tmp[i]%a1==&&gcd(tmp[i]/a1,a0/a1)==&&gcd(b1/b0,b1/tmp[i])==){
++ans;
}
register int y=b1/tmp[i];
if(tmp[i]==y) continue;
if(y%a1==&&gcd(y/a1,a0/a1)==&&gcd(b1/b0,b1/y)==){
++ans;
}
}
cout<<ans<<endl;
}
}

最新文章

  1. nginx 配置https
  2. 字符数组和string判断是否为空行 NULL和0 namespace变量需要自己进行初始化
  3. js操纵css更改加载图片大小
  4. MongoDB—— 读操作 Core MongoDB Operations (CRUD)
  5. GDI+的常用类
  6. USACO Section 5.3 Milk Measuring (IDDFS+dp)
  7. Xcode6在10.9.4上面crash解决
  8. BZOJ-1012-[JSOI2008]最大数maxnumber(线段树)
  9. BZOJ 1115: [POI2009]石子游戏Kam [阶梯NIM]
  10. NEO从入门到开窗(4) - NEO CLI
  11. css--父元素塌陷
  12. 《Python》网络编程之验证客户端连接的合法性、socketserver模块
  13. 逆序对__归并排序__树状数组 Inversions SGU - 180
  14. 二叉树 Java 实现 前序遍历 中序遍历 后序遍历 层级遍历 获取叶节点 宽度 ,高度,队列实现二叉树遍历 求二叉树的最大距离
  15. Java入门:基础算法之线性搜索
  16. JavaScript数组中的22个常用方法
  17. (a*b)%c 小的技巧
  18. GPU 编程入门到精通(四)之 GPU 程序优化
  19. [NOIP2017 TG D2T3]列队
  20. typeAliasesPackage 配置

热门文章

  1. html页面中引入html
  2. TCP慢启动
  3. JAVA使用easyexcel操作Excel
  4. ionic1使用imagepicker在安卓手机上闪退问题
  5. Java常考面试题整理(五)
  6. 设置Apache监听多个端口
  7. Qt编写大数据大屏UI电子看板系统
  8. Dubbo Monitor Simple 监控中心
  9. 访问 Django 项目的静态资源
  10. jsp死循环