分析:由于我们输出的数字只能小于L,所以我们就枚举所以的可能,在对每一种可能相除,在和原始数据相处的值做差,插值越小说明符合程度越大,保留更新更小的差值,直到最后输出最小的情况。(具体看代码注释)。
#include <stdio.h>
int f(int a,int b){
if(b==0)return a;
else f(b,a%b);
}
int main(){
int n,m,j,i,k,a,b;
scanf("%d%d%d",&n,&m,&k);
float r=100;
for(i=1;i<=k;i++){
for(j=1;j<=k;j++){
float x1=n*1.0/m;
float x2=i*1.0/j;
if(f(i,j)==1&&x2>=x1&&x2-x1<r){
a=i;
b=j;
r=x2-x1;
}
}
}
printf("%d %d",a,b);
return 0;
}