#include<stdio.h> #include<math.h> int main() { int i,a,b,x,y,m,n,q; double p,min=1; scanf("%d%d",&a,&b); for(i=2;i<=32767;i++) { p=(double)i*a/b; q=(int)p; if(fabs(p-q)<=1e-6) x=q-1; else if(p-q<=q+1-p) x=q; else x=q+1; //四舍五入,加0.5会出现精度问题 y=i; if(fabs((double)x/y-(double)a/b)<min) { min=fabs((double)x/y-(double)a/b); m=x; n=y; } } for(i=2;i<=32767;i++) if(m%i==0&&n%i==0) { m/=i; n/=i; } printf("%d %d",m,n); return 0; } /************************************************************** Problem: 2009 User: admin Language: C++ Result: Accepted Time:49 ms Memory:1144 kb ****************************************************************/