HDU 5974 A Simple Math Problem
阿新 • • 發佈:2018-12-14
題意:已知兩個正整數x,y的和為a,以及x,y的最小公倍數為b,求x,y
自己並沒有推出來數學規律,百度到規律為 : gcd(a,b)與gcd(x,y)相等
那麼容易得到:x*y等於b*gcd(a,b)
此時,x,y的和與積已知,聯立求解,最後判斷是否可以得到整數解
ps: 一條性質:如果x與y互質,那麼xy和x+y肯定互質
#include<stdio.h> #include<math.h> long long gcd(long long a,long long b) { long long r; while(b) { r=a%b; a=b; b=r; } return a; } int main() { long long int a,b; while(scanf("%lld%lld",&a,&b)!=EOF) { long long int two_gcd=gcd(a,b); long long int ji=b*two_gcd; b=ji; double delta=1.0*a*a-4*b; if(delta>=0) { int zan=( int)sqrt(delta); long long sd=(long long )zan; long long int x,y; x=(a-sd)/2; y=(a+sd)/2; if(x+y==a&&x*y==b) printf("%lld %lld\n",x,y); else printf("No Solution\n"); } else printf("No Solution\n"); } return 0; }