zoukankan      html  css  js  c++  java
  • 7832:最接近的分数

    总时间限制: 1000ms内存限制: 65536kB
    描述

    分母不超过 N 且 小于 A/B 的最大最简分数是多少?

    输入
    三个正整数N,A,B,相邻两个数之间用单个空格隔开。1 <= A < B < N <= 1000。
    输出
    两个正整数,分别是所求分数的分子和分母,中间用单个空格隔开。
    样例输入
    100 7 13
    样例输出
    50 93

    算法分析:枚举法

     1 #include<cstdio>
     2 double commom(double x,double y)
     3 {
     4     double m=x,n=y,r;
     5     do
     6     {
     7         r=int(m)%int(n);
     8         m=n;
     9         n=r;
    10     }while(r!=0);
    11     return m;
    12 }
    13 int main()
    14 {
    15     double sum,a,b,n,i,A,B,max=0,p,q;
    16     scanf("%lf%lf%lf",&n,&a,&b);
    17     for(B=n;B>=1;B--)
    18         for(A=1;;A++)
    19         {
    20             if(A/B>a/b) break;
    21             if(A/B>max&&A/B<a/b)
    22             {
    23                 max=A/B;
    24                 p=A/commom(A,B);
    25                 q=B/commom(A,B);
    26             }
    27         }
    28     printf("%g %g",p,q);
    29     return 0;
    30 }

    另一个AC代码,参考链接:http://blog.csdn.net/tigerisland45/article/details/71157783

     1 #include <iostream>  
     2 using namespace std;    
     3 int main()  
     4 {  
     5     int n, a, b, p, q, x, y;  
     6   
     7     scanf("%d%d%d", &n, &a, &b);  
     8   
     9     // 分子x从1-n,分母y从n-1;结果p/q,开始时1/n(最小值)  
    10     p = 1, q = n;  
    11     for(x=1; x<=n; x++)  
    12         for(y=n; y>=1; y--)  
    13             if(b * x < a * y && x * q > p * y)  
    14                 p = x, q = y;  
    15   
    16     printf("%d %d
    ", p, q);  
    17   
    18     return 0;  
    19 }  

    用穷举法找满足条件的最大分数。

  • 相关阅读:
    Vue中改变对象的注意事项
    Object.assign简单总结
    Base64编码
    vue中prop传值时加不加v-bind(冒号:)
    内联元素的padding和margin
    flex自适应宽度显示省略号
    Http和Https
    JVisualVM 模拟一次内存泄漏场景分析
    Lucene
    布隆算法原理
  • 原文地址:https://www.cnblogs.com/huashanqingzhu/p/7289404.html
Copyright © 2011-2022 走看看