标签:uva
题意:
给出两个数字a,b;
要求给出一系列分数,值不断逼近a/b;
第一个分母要是1;最后一个要值等于a/b;
思路:
设c = a/b;
我们直接循环从1到b枚举分母;
用c*b + 0.5算出分子;(加0.5为了四舍五入);
如果算出来分子除以分母,比之前那个更接近c,就输出;
否则不输出;
#include<cstdio> #include<cstring> #include<cmath> int n,m; int main() { int f = 0; while(scanf("%d%d",&n,&m) == 2) { if(f) printf("\n"); f++; double c = 1.0 * n / m; double pre = 100000000.0; for(int i = 1; i <= m; i++) { int tmp = c * i + 0.5; if(fabs(c - (tmp * 1.0 / i)) < pre) { pre = fabs(c - (tmp * 1.0 / i)); printf("%d/%d\n",tmp,i); } } } }
标签:uva
原文地址:http://blog.csdn.net/yeyeyeguoguo/article/details/45341107