博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
求出全部的正整数对 使他们最大公约数为n,最小公倍数为m
阅读量:6307 次
发布时间:2019-06-22

本文共 776 字,大约阅读时间需要 2 分钟。

题目大概是这种:

大意就是 求出全部的正整数对 使他们最大公约数为n。最小公倍数为m。

(1 <= n, m <= 10^10)

能够将问题转化为 : 设a,b就是那个整数对。n, a, b, m, 这4个数都是能够被n整除的,能够都除以n。 题目转化为求出 最大公约数为1, 最小公倍数为m/n的对数 。

也就是求出在1到m/n里 乘积为m/n且互质的对数。

能够在O(sqrt (m/n) )内解决。

#include 
#include
#include
#include
#include
#include
#define MAX 0x3f3f3f3f#define N 2000005typedef long long LL;using namespace std;int T;LL n, m;LL gcd(LL a, LL b) { return b == 0 ? a : gcd(b, a % b);}int main(){ cin>>T;while(T--) { cin >> n >> m; if(m % n) { printf("0\n"); continue; } LL x = m / n; int ans = 0; for(LL i = 1; i <= (LL)sqrt(x); i++) { if(x % i == 0) { LL j = x / i; if(gcd(i, j) == 1) ans++; } } printf("%d\n", ans); } return 0;}



转载地址:http://renxa.baihongyu.com/

你可能感兴趣的文章
Java 编程的动态性, 第4部分: 用 Javassist 进行类转换--转载
查看>>
完毕port(CompletionPort)具体解释 - 手把手教你玩转网络编程系列之三
查看>>
iOS8 Push Notifications
查看>>
各大名企笔试及面经大全(程序猿必读)
查看>>
Oracle 连接、会话数的查看,修改
查看>>
Python使用QRCode模块生成二维码
查看>>
英语学习的重要性
查看>>
Android中Handler引起的内存泄露
查看>>
原产地政策,jsonp跨域
查看>>
HDU 1143 Tri Tiling(递归)
查看>>
ffmpeg参数具体解释
查看>>
记一次公司仓库数据库服务器死锁过程
查看>>
Oracle 11g password过期被锁定报道 ORA-28000 the account is locked
查看>>
【Struts2学习笔记(2)】Action默认值和配置Action于result各种转发类型
查看>>
轨磁条简介
查看>>
(算法)交错的字符串
查看>>
hdu 5471(状压DP or 容斥)
查看>>
oracle.jdbc.driver.OracleDriver和oracle.jdbc.OracleDriver这两个驱动的区别
查看>>
NSQ部署
查看>>
git常用命令记录
查看>>