雕刻时光

just do it……nothing impossible
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

分数最佳接近——pku3039

Posted on 2011-03-16 20:11  huhuuu  阅读(160)  评论(0编辑  收藏  举报
用贪心做
初始i=j=1
当i/j>=n/m时:j++
反之i++
随时记录最接近的值即可
View Code
#include<stdio.h>

double jue(double a)
{
if(a>0)return a;
return -a;
}
int main()
{
int n,m;
while(scanf("%d %d",&n,&m)!=EOF)
{
int ri,rj,i,j;
double e=n*1.0/m,t,cha=99999999;
i
=1;
j
=1;
while(i<=32767&&j<=32767)
{
t
=i*1.0/j;
if(t>=e)
j
++;
else
i
++;
t
=i*1.0/j;
t
=jue(t-e);
if(t<cha&&(i*m!=j*n)&&i<=32767&&j<=32767)
{
cha
=t;
ri
=i;
rj
=j;
}
}
printf(
"%d %d\n",ri,rj);
}
return 0;
}