如图的数列就是法里数列
特点是分子分母互质
这个题其实就是寻找最逼近一个浮点数的法里数
法里数的产生:
假设已知两个法里数a/b和c/d,那么两者之间的法里数就是(a+c)/(b+d)
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <vector>
#include <queue>
#include <stack>
#include <cmath>
using namespace std;
int t,k,m;
double x;
int main()
{
scanf("%d",&t);
while(t--)
{
scanf("%d%d%lf",&k,&m,&x);
int a=0,b=1,c=1,d=1,e,f;
while(1)
{
e=a+c;
f=b+d;
int gcd=__gcd(e,f);
e/=gcd;
f/=gcd;
if(f>m) break;
if(1.0*e/f<=x)//二分过程
{
a=e;
b=f;
}
else
{
c=e;
d=f;
}
}
printf("%d ",k);
if(fabs(1.0*a/b-x)>fabs(1.0*c/d-x))
printf("%d/%d\n",c,d);
else
printf("%d/%d\n",a,b);
}
return 0;
}