hdu5974————A Simple Math Problem(GCD)
来源:互联网 发布:mac os 进去读条 黑屏 编辑:程序博客网 时间:2024/04/28 12:08
A Simple Math Problem
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 2382 Accepted Submission(s): 746
Problem Description
Given two positive integers a and b,find suitable X and Y to meet the conditions:Least Common Multiple (X, Y) =bX+Y=a
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 8798 10780
Sample Output
No Solution308 490
思路:
设有两个数 x 和 y
因为gcd(x,y)=g x=k1*g y=k2*g
所以易得 k1 和 k2 互质
由题意
g*k1*k2=b;
g*(k1+k2)=a;
所以 k1*k2=b/g
k1+k2=a/g
因为 k1 和 k2 互质
所以 k1*k2 和 k1+k2 互质
所以 a和b 互质
所以 gcd(x,y)=gcd(a,b);
接下来就用 初中学的解一元二次方程 和他的性质:x1+x2=-b/a x1x2=c/a 来求解
#include<iostream>#include<cmath>#include<cstring>#include<vector>#include<stdlib.h>#include<stdio.h>#include<algorithm>#include <set>#include <list>#include <deque>#include<map>#include<sstream>#include<time.h>#define pi 3.1415926#define N 2005#define M 15#define INF 0x3f3f3f3f#define lson l , m , rt << 1#define rson m + 1 , r , rt << 1 | 1using namespace std;typedef long long ll;const int maxn = 1000000 + 5;const int day =21252;ll gcd(ll a,ll b){ if(b==0) return a; else return gcd(b,a%b);}int main(){ ll a,b; while((scanf("%lld %lld",&a,&b))!=EOF) { ll q=gcd(a,b); a=a/q; b=b/q; if(a*a-4*b<0) { printf("No Solution\n"); continue; } ll d=a*a-4*b; ll c=sqrt(d); if(c*c!=d) { printf("No Solution\n"); continue; } if((a+c)%2!=0||(a-c)%2!=0) { printf("No Solution\n"); continue; } ll x1=(a+c)/2; ll x2=(a-c)/2; printf("%lld %lld\n",x2*q,x1*q); } return 0;}
阅读全文
0 0
- hdu5974————A Simple Math Problem(GCD)
- hdu5974——A Simple Math Problem(gcd推导+数学+解方程组)
- HDU5974 A Simple Math Problem
- HDU5974 A Simple Math Problem
- HDU5974 Simple Math Problem
- HDU5974 A Simple Math Problem (韦达定理)
- HDU 5974 A Simple Math Problem(GCD,LCM)
- HDU 5974 A Simple Math Problem 数论 gcd
- HDU 5974 A Simple Math Problem(GCD LCM)
- A Simple Math Problem
- A Simple Math Problem
- A Simple Math Problem
- A Simple Math Problem
- A Simple Math Problem
- A simple math problem
- A Simple Math Problem
- A Simple Math Problem hdu1757
- hdu A Simple Math Problem
- 创建多线程的三种方式
- ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
- 2005-数组练习之猜数字
- 正则表达式学习总结
- 1065. A+B and C (64bit)
- hdu5974————A Simple Math Problem(GCD)
- hdu6080(FLOYD)
- 为什么要上采样
- Python中map与lambda的结合使用
- Java引用和C++指针的区别
- Unity3D
- MAVEN_生命周期
- windows环境变量(一)
- HDU 6105 Gameia (树上博弈 17多校赛第六场)