梁伊人 2022-12-13 17:06 采纳率: 50%
浏览 48

如何使用c语言找到最接近的分数

问题

img


我的思路

img

img

报错
time limit exceed50%
希望得到的帮助
写一个不超时的代码(最好在我的代码基础上改)

  • 写回答

1条回答 默认 最新

  • 滴水不穿石 2022-12-13 20:57
    关注

    仅供参考!谢谢!
    写得不好,循环嵌套速度有点慢,你看合不合要求?
    你若有好的算法,多多指教!

    img

    img

    img

    #include <stdio.h>
    #include <math.h>
    
    int *getarr(int x, int y, int n)
    {
        if (n < 1 || n > 100000 || x < 1 || x > 100000 || y < 1 || y > 100000)
            return NULL;
            
        static int arr[2] = {0, 1};
        register int j = 1;
        double m = x * 1.0 / y * 1.0;
        register double tmp1, tmp2;
    
        for (int b = 1; b <= n; b++)
        {
            for (int a = 0; a < 100000; a++)
            {
                tmp1 = a * 1.0 / b - m;
                do
                {
                    tmp2 = (a + j * 1.0) * 1.0 / b - m;
                    j++;
                } while (tmp2 < 0);
    
                if (tmp1 <= 0.0 && tmp2 >= 0.0)
                {
                    if (tmp2 > fabs(tmp1))
                    {
                        if (1.0 * a / b > arr[0] * 1.0 / arr[1])
                        {
                            arr[0] = a;
                            arr[1] = b;
                        }
                    }
                    else
                    {
                        if (1.0 * (a + j - 1) / b > arr[0] * 1.0 / arr[1])
                        {
                            arr[0] = a + j - 1;
                            arr[1] = b;
                        }
                    }
                }
            }
        }
    
        return arr;
    }
    
    int main(int argc, char *argv[])
    {
        int x, y, n;
        int *p = NULL;
        scanf("%d%d%d", &x, &y, &n);
        p = getarr(x, y, n);
        printf("%d/%d", p[0], p[1]);
    }
    
    
    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 12月13日

悬赏问题

  • ¥15 求京东批量付款能替代天诚
  • ¥15 slaris 系统断电后,重新开机后一直自动重启
  • ¥15 51寻迹小车定点寻迹
  • ¥15 谁能帮我看看这拒稿理由啥意思啊阿啊
  • ¥15 关于vue2中methods使用call修改this指向的问题
  • ¥15 idea自动补全键位冲突
  • ¥15 请教一下写代码,代码好难
  • ¥15 iis10中如何阻止别人网站重定向到我的网站
  • ¥15 滑块验证码移动速度不一致问题
  • ¥15 Utunbu中vscode下cern root工作台中写的程序root的头文件无法包含