分析:由于我们输出的数字只能小于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;
}