已知a和b的最大公因数和最小公倍数求这两个数字
描述
GCD(the Greatest Common Divisor):最大公因数。
LCM(the Least Common Multiple):最小公倍数。
请问是否存在两数 c 和 d 满足 GCD(c,d)= a,LCM(c,d)= b 并且 c != a,c != b,d != a,d != b。
输出
针对每组案例,如果存在这样的 c 和 d,那么输出它们。
如果不存在这样的 c 和 d,则输出-1。
每组案例输出结束以后都要换行。
题解
首先a和b的最小公倍数=ab/gcd(a,b),所以可以求得两个数的积等于它们最大公约数和它们最小公倍数的积,所以只需要暴力另i从2开始枚举,判断它能否被c整除,如果可以再判断i和n/最大公约数和读入的最大公约数是否相同即可。
然后不妨假设a和b的最大公约数为x,最小公倍数为y,从中可得到
a= x * p1
b= x * p2
其中p1和p2都为质数,所以可以得到最小公倍数 y= x * p1 * p2
最后移项得到 y/x=p1p2 也就是说 y 一定可以整除 x。所以当y/x!=0的时候一定无解
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long int ll;
ll gcd(ll a, ll b)
{while (b ^= a ^= b ^= a %= b);return a;
}//快速求公约数
int main()
{ll a, b;cin >> a >> b;bool f = false;ll c = a * b; if (b % a != 0){cout << -1 << endl;}else{for (ll i = 2; i <= sqrt(c); i++){if (c % i == 0 && gcd(i, c / i) == a && i != a && i != b && c / i != a && c / i != b){cout << i << " " << c / i << endl;f = true;break;}}if (!f){cout << -1 << endl;}}return 0;}
已知a和b的最大公因数和最小公倍数求这两个数字相关推荐
- 【小米校招笔试】假如已知有n个人和m对好友关系(存于数字r)。如果两个人是直接或间接的好友(好友的好友的好友...),则认为他们属于同一个朋友圈,请写程序求出这n个人里一共有多少个朋友圈。
2016年小米校招笔试第三题(西安站) 3 假如已知有n个人和m对好友关系(存于数字r).如果两个人是直接或间接的好友(好友的好友的好友...),则认为他们属于同一个朋友圈,请写程序求出这n个人里一共 ...
- 【C++】已知二叉树先序遍历+中序遍历 求后序遍历
题目:已知二叉树先序遍历+中序遍历 求后序遍历 对于一棵二叉树,给定其先序遍历的结果序列和中序遍历的结果序列,请写出其后序遍历的结果序列. 输入样例: GDAFEMHZ(先序遍历的结果序列) ADEF ...
- java 球面距离_[置顶] C语言实验题:已知地球上两点的经度和纬度求其球面距离...
要求:地球的平均半径为6371千米,已知地球上两个城市A.B的经度和纬度,编程序求出这两个城市之间的地面距离. 首先,固定两点,a(x1,y1,z1),b(x2,y2,z2). 由空间解析几何及向量知 ...
- 已知T(n)=2T(n/2)+n,求O(n)?
已知T(n)=2T(n/2)+n;求O(n)? 总结网上的归纳,自己再写一遍: T(n)=2T(n/2)+n 第一次,即k=1T(n/2)=2T((n/2)/2)+n/2 第二次,即k=2T((n/2 ...
- 数据结构----二叉树已知先序和中序遍历序列求后序遍历
说明 通过先序和中序或者中序和后序我们可以还原出原始二叉树,但是通过先序和后序是无法还原出原始二叉树也即是说,只有通过先序和中序,或者中序和后序我们才可以唯一的确定一个二叉树. 例子一 已知先序和中序 ...
- 已知直角三角形的斜边是某个整数,求满足这个条件的不同直角三角形的个数。
勾股定理,西方称为毕达哥拉斯定理,它所对应的三角形现在称为:直角三角形. 已知直角三角形的斜边是某个整数,并且要求另外两条边也必须是整数. 求满足这个条件的不同直角三角形的个数. [数据格式] 输入一 ...
- EXCEL中批量计算“已知一点坐标、方位角、距离,求坐标点”
前言 日常工作中有时需要计算已知点.正本方位角.距离计算坐标点.如下图 已知:蓝点坐标.正本方向夹角为方位角,蓝点与未知点(红色)之间的距离,求红色点坐标. 小O地图Excel插件版提供在excel表 ...
- 已知一个坐标系下某个点的坐标,求另一个坐标系下该点的坐标
问题描述: 已知在odo坐标系下body点的坐标(x_body_in_odo,y_body_in_odo),和obj点的坐标(x_obj_in_odo,y_obj_in_odo), odo坐标系和bo ...
- 已知一点经纬度,方位角,距离,求另一点经纬度
参考了博文:http://blog.csdn.net/pyx6119822/article/details/52298037 ------------------------------------- ...
最新文章
- 计算机与材料成型与控制方面的应用,广东科技学院
- LIBSVM的使用方法以及参数注释总结
- 4. 用MVC实现URL路由
- ospf 环回口的路由条目_路由策略之重分发示例分析
- java中能对属性封装吗_JAVA中的封装
- anaconda安装keras_一定要看的Tensorflow-GPU+Keras安装教程
- 工厂方法模式java实例,设计模式之工厂方法模式实例(Java)
- IDEA+Maven+Git
- mvc npoi将List实体导出excel的最简单方法
- 文字处理技术:空格压缩
- 从php的生命周期来优化页面响应时间
- [句型] 二十四、特殊疑问句 [ where ] [ what ] [ why ]
- 白盒测试重点复习内容
- 30岁的程序员......
- 旋转编码器的原理和使用方法
- 寝室多设备连接校园网的解决方案
- 论文阅读笔记-GT U-Net: A U-Net Like Group TransformerNetwork for Tooth Root Segmentation
- 初识以太坊 ——钱包、测试网络和简单交易
- 数据可视化如何作图-图表切片分析
- 菜鸟教程:空格键用法大搜罗
热门文章
- 重力场和稳态海洋环流探测器(GOCE)
- EZo UIBuilder中嵌入微博分享按钮【实例】
- 离线部署NFS文件系统
- 关于“有未经处理的异常: 0xC0000005: 写入位置 0xfeeefeee 时发生访问冲突”的解...
- 上线项目 Docker部署项目到服务器总结
- OH----调试T7520过程中对 linux usb dwc3的总结
- 电脑打字拼音出现下划线,没有中文提示框
- 合并写(write combining)
- 在Java里面使用Pairs或者二元组
- 录屏的知识片段的记录与理解