hdu5974
Posted 不积跬步无以至千里,不积小流无以成江海
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hdu5974相关的知识,希望对你有一定的参考价值。
A Simple Math Problem
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 1795 Accepted Submission(s): 524
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
1 #include <iostream>
2 #include <cmath>
3 #include <algorithm>
4 #include <string>
5 #include <cstring>
6 #include <cstdio>
7 using namespace std;
8 long long f(long long a,long long b)
9 {
10 return (b==0)?a:f(b,a%b);
11 }
12 int main()
13 {
14 long long a,b,l,ans,t;
15 while(~scanf("%I64d%I64d",&a,&b))
16 {
17 l=f(a,b);
18 if(a*a-4*b*l<0)
19 cout<<"No Solution"<<endl;
20 else
21 {
22 ans=(a-sqrt(a*a-4*b*l))/2;
23 t=a-ans;
24 if(ans*t/f(t,ans)==b)
25 cout<<ans<<‘ ‘<<t<<endl;
26 else
27 cout<<"No Solution"<<endl;
28 }
29 }
30 return 0;
31
32 }
以上是关于hdu5974的主要内容,如果未能解决你的问题,请参考以下文章
A Simple Math Problem HDU - 5974
HDU3001&BUCU5974——旅行商变形2(英文版Travelling)——题解
hdu 5974 A Simple Math Problem