1 条题解
-
0
C++ :
#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; }
- 1
信息
- ID
- 2064
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者