hdu 5974 A Simple Math Problem
来源:互联网 发布:我的世界蛤蟆吃网络id 编辑:程序博客网 时间:2024/06/05 07:31
A Simple Math Problem
Problem Description
Given two positive integers a and b,find suitable X and Y to meet the conditions:X+Y=a
Least Common Multiple (X, Y) =b
Input
Input includes multiple sets of test data.Each test data occupies one line,including two positive integers a(1≤a≤2*10^4),b(1≤b≤10^9),and their meanings are shown in the description.Contains most of the 12W test cases.
Output
For each set of input data,output a line of two integers,representing X, Y.If you cannot find such X and Y,output one line of "No Solution"(without quotation).
Sample Input
6 8
798 10780
Sample Output
No Solution
308 490
Source
2016ACM/ICPC亚洲区大连站-重现赛(感谢大连海事大学)
题意:给定a,b,找到一组数据x,y使得 x+y=a,lcm(x,y)=b;
思路:学弟猜测:gcd(x,y)=gcd(a,b);
严格证明(转自:点我啊):
已知条件:
①x+y=a,
②lcm(x,y)=b.
令gcd(x,y)=g;
则 x/g=k1 ,y/g=k2 且 k1与k2互质 (由于gcd为最大公约数);
==> g*k1+g*k2=a;
g*k1*k2=b;
==> k1+k2=a/g;
k1*k2=b/g;
因k1与k2互质,所以k1+k2与k1*k2互质;
所以 a/g 与 b/g 也互质!
那么g就是gcd(a,b);
所以gcd(x,y)=gcd(a,b);
代码:
#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>using namespace std;int main(){ int a,b,c; while(scanf("%d%d",&a,&b)!=EOF) { c=__gcd(a,b); int x,y; if((a*a-4*b*c)<0) { printf("No Solution\n"); continue; } x=(int)((a+sqrt(a*a-4*b*c))/2); y=a-x; if(x*y/__gcd(x,y)!=b) { printf("No Solution\n"); continue; } if(x>y) swap(x,y); printf("%d %d\n",x,y); } return 0;}
阅读全文
0 0
- hdu 5974 A Simple Math Problem
- hdu 5974 A Simple Math Problem
- hdu 5974 A Simple Math Problem
- HDU 5974 A Simple Math Problem(数论)
- hdu 5974 A Simple Math Problem
- hdu 5974 A Simple Math Problem
- hdu 5974 A Simple Math Problem
- HDU 5974 A Simple Math Problem 数学
- hdu 5974 A Simple Math Problem
- HDU 5974 A Simple Math Problem
- hdu 5974 A Simple Math Problem
- hdu 5974 A Simple Math Problem
- HDU 5974 A Simple Math Problem
- HDU-5974-A Simple Math Problem
- [HDU](5974)A Simple Math Problem ---数论
- hdu A Simple Math Problem
- A Simple Math Problem (HDU
- A Simple Math Problem HDU
- Android Webview不使用默认浏览器
- 高通量数据
- 冒泡排序
- Spring事务管理(详解+实例)
- ie8兼容性问题(七) js参数值中文情况下无法传到controller
- hdu 5974 A Simple Math Problem
- ACL 2017自然语言处理精选论文
- 大数据领域三个大的技术方向资料
- OpenCV编程->求点集映射关系实现
- Maven
- 请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字
- Qt学习使用(1)
- Java多线程编程学习chapter1
- caffe学习:数据层参数